作者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