IOS4的多工機制概述

2021-06-04 16:12:40 字數 1474 閱讀 1500

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...