bgtask = uibackgroundtaskinvalid;
}];
複製**
2. 把自己要執行的任務以block的形式新增到系統的非同步任務佇列中去(
dispatch_async(dispatch_get_global_queue(dispatch_queue_priority_default, 0), ^);
複製**
/**********************split line for coder*********************/
通過上面的描述,我相信很多人已經知道這個鬧鐘該怎麼去實現了。不過發揚一下共享精神,我還是把我的簡單實現在這裡說一下。
0. 說明一下dispatch_block_t這個型別,這個型別就是block型別,從字面上來講,就是乙個程式塊。將你要執行的**放到"^"之間,就變成了乙個block物件(姑且就叫它物件吧)。例如:
dispatch_block_t block = ^;
複製**
1. 定義乙個定時器用於程式啟用狀態的時候進行計時。
2. 定義兩個巨集用來寫那些很麻煩的block結構,注意,我這裡用的是
同步佇列。
#define doorsbgtaskbegin() ]; \
dispatch_block_t block = ^; \
dispatch_sync(dispatch_get_global_queue(dispatch_queue_priority_default, 0), block); \}
複製**
3. 在程式啟動的時候把定時器啟動,這一篇重點不在定時器,所以就不對定時器做過多描述了。
4.1 首先把三個變數說明一下
static int gialarminterval = 5 * 60; // 5分鐘,鬧鐘時間間隔
const int ktimerinterval = 1 * 60; // 1分鐘,定時器時間間隔
const int ksysmaxtimeperbgtask = 10 * 600; // 10分鐘,目前版本系統為每個後台任務分配的最大時間
複製**
4.2 執行**
/**/
int i = gialarminterval / ktimerinterval;
while (i > 0)}
複製**
4.3 鬧鐘**,這個比較簡單,列印一點資訊就是了。
- (void)alarmfunc
else }}
複製**
/**********************split line for coder*********************/
基本上就是這樣子了,我這裡只是希望給大家起到一點提示性的作用,大家如果能夠有所收穫就可以自由發揮,希望大家能開發出合理使用多工的應用程式。
10分鐘內沒做完,就只能被系統卡擦掉了。
對 iOS 多工的誤解 多工原理
如今,多工這個有趣特性已經成功整合在裝置中,我們如今使用的智慧型手機完全支援多工,這其中有乙個東西尤其功不可沒。這就是蘋果的iphone手機。ios是使用廣泛的令人驚嘆的作業系統。在2010年之後ios 4 變成了多工作業系統。眾所周知,當你開啟乙個應用程式然後退出,它仍然會保留在後台。當然,這會導...
對 iOS 多工的誤解 多工原理
如今,多工這個有趣特性已經成功整合在裝置中,我們如今使用的智慧型手機完全支援多工,這其中有乙個東西尤其功不可沒。這就是蘋果的iphone手機。ios是使用廣泛的令人驚嘆的作業系統。在2010年之後ios 4 變成了多工作業系統。眾所周知,當你開啟乙個應用程式然後退出,它仍然會保留在後台。當然,這會導...
iOS中的多工
ios7的多工 後台任務 uibackgroundtaskidentifier backgroundupdatetask dispatch async dispatch get global queue dispatch queue priority default,0 void beginback...