作者apron2444 (apron)
看板MacDev
标题Re: [问题] 自动更新
时间Sat Sep 17 23:15:25 2011
※ 引述《yueyajbdt (碳烤焦猫)》之铭言:
: 我目前写了一个可以检测停车位的app,但发觉当离开这个app回到
: iphone主页面时再点进去不会进行更新,我本以为离开後就会call dealloc
: 但从实验上来看好像没有...
: 我把wifi关了再点进去结果还是保留上次的资讯
: 在网路上有看到别人写的app里面包含了每2分钟自动更新一次数据的功能
: 请问这个是怎麽做的
一点浅见,在ios4以後,系统支援 multitasking 所以你在单纯用home键回到桌面
并不会真的把app关闭 系统会将app放到background 等用户再开启那个app时 就把
这个process从background拿回来 在ios编程中 通常在你的xxxappdelegate.m中
会包括你的app的一些事件处理的方法,像上面所说的 当你按home 键回到桌面那一瞬间
但要注意的是你的app也应该照顾到ios 3.x或更早的装置 如果ios支援multitasking 那
你可以用 application:willresignactive, application:didenterbackground等handler
如果没支援multitasking那程式应该会触发 application:willterminate 就是真的把app
关闭。
至於要怎样在background进行工作 基本上就是用到 thread , quque, gcd等等的东西
另外顺带一提GCD配上 block是很好的策略 基本上如果你的程式要做异步操作都会用到
你可以参下以下两个连结 :
http://tinyurl.com/3v2ru7n
^^^这个是有关 gcd 跟 block的概念与应用
http://tinyurl.com/6z8w28h
^^^这个应该跟你要的功能有点类似 可以去看看
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.246.252.94
1F:→ apron2444:另外你所说的每隔一段时间做事 可以用 nstimer 09/17 23:20
2F:→ shinrenpan:multitasking我记得只能执行media location跟voip吧 09/18 14:32
3F:推 Blueshiva:其实不必用到multitasking,他的问题只是在把更新的code 09/18 16:37
4F:→ Blueshiva:放在不会被叫到的method里了,去找一下iOS4里面程式切换 09/18 16:38
5F:→ Blueshiva:的时候哪几个method会被系统叫到就好了 09/18 16:38
6F:推 yueyajbdt:感谢两位的回答,我有找到方法解决我的需求,但同时也 09/19 17:16
7F:→ yueyajbdt:有新的疑问,请两位看看 09/19 17:16
8F:→ yueyajbdt:在原文章里 09/19 17:17
9F:推 yueyajbdt:唔..自己解决了QQ 09/19 18:33