后臺(tái)運(yùn)行

設(shè)備運(yùn)行的五種狀態(tài)

Not running 程序未啟動(dòng) 或者已經(jīng)被殺死
Inactive 當(dāng)前應(yīng)用正在前臺(tái)運(yùn)行眠屎,但是并不接收事件 中途過(guò)渡會(huì)短暫停留在此狀態(tài)。唯一在此狀態(tài)停留時(shí)間比較長(zhǎng)的情況是:當(dāng)用戶鎖屏?xí)r火窒,或者系統(tǒng)提示用戶去響應(yīng)某些(諸如電話來(lái)電、有未讀短信等)事件的時(shí)候
Active 當(dāng)前應(yīng)用正在前臺(tái)運(yùn)行魏割,并且接收事件 即App在線
Suspended 應(yīng)用處在后臺(tái)廊勃,并且已停止執(zhí)行代碼 另一稱(chēng)呼為掛起狀態(tài),APP依然處在系統(tǒng)內(nèi)存中搬男,當(dāng)系統(tǒng)發(fā)出低內(nèi)存警告時(shí)拣展,會(huì)殺死這個(gè)進(jìn)程以保證其他的前臺(tái)應(yīng)用正常運(yùn)行,我們要做的也就是防止app被掛起 從而能夠進(jìn)入后臺(tái)模式
Background 應(yīng)用處在后臺(tái)缔逛,并且還在執(zhí)行代碼备埃。一般的應(yīng)用,會(huì)在此狀態(tài)停留10分鐘, 而iOS為了在某些情況下提供更好的體驗(yàn)褐奴,提供了一些選項(xiàng)按脚,滿足這些選項(xiàng)就可以在后臺(tái)運(yùn)行很長(zhǎng)一段時(shí)間

Paste_Image.png

應(yīng)用程序生命周期

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

      NSLog(@"\n ===> 程序啟動(dòng) !");
    return YES;
}
//  當(dāng)有電話進(jìn)來(lái)或者鎖屏,這時(shí)你的應(yīng)用程會(huì)掛起  你可以重寫(xiě)這個(gè)方法歉糜,做掛起前的工作乘寒,比如關(guān)閉網(wǎng)絡(luò),保存數(shù)據(jù)
//  游戲應(yīng)該用這個(gè)方法暫停游戲
- (void)applicationWillResignActive:(UIApplication *)application {
     NSLog(@"\n ===> 程序暫行 !");
}
/*
    用這個(gè)方法來(lái)釋放共享資源,保存用戶數(shù)據(jù),銷(xiāo)毀計(jì)時(shí)器,并儲(chǔ)存足夠的應(yīng)用程序狀態(tài)信息來(lái)恢復(fù)您的應(yīng)用程序的當(dāng)前狀態(tài)
    如果您的應(yīng)用程序支持后臺(tái)執(zhí)行匪补,這種方法被稱(chēng)為替代applicationWillTerminate:當(dāng)用戶退出
 */
- (void)applicationDidEnterBackground:(UIApplication *)application {
     NSLog(@"\n ===> 程序進(jìn)入后臺(tái) !");
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
     NSLog(@"\n ===> 程序進(jìn)入前臺(tái) !");
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
     NSLog(@"\n ===> 程序重新激活 !");
}
/*
 當(dāng)用戶按下按鈕伞辛,或者關(guān)機(jī)烂翰,程序都會(huì)被終止。當(dāng)一個(gè)程序?qū)⒁=K止時(shí)會(huì)調(diào)用 applicationWillTerminate 方法蚤氏。但是如果長(zhǎng)主按鈕強(qiáng)制退出甘耿,則不會(huì)調(diào)用該方法。這個(gè)方法該執(zhí)行剩下的清理工作竿滨,比如所有的連接都能正常關(guān)閉佳恬,并在程序退出前執(zhí)行任何其他的必要的工作
 殺死程序
 */
- (void)applicationWillTerminate:(UIApplication *)application {
    NSLog(@"\n ===> 程序被kill!");
}

向系統(tǒng)借10分鐘后臺(tái)運(yùn)行時(shí)間

1.借條

@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
/**
 *  借條
 */
@property (nonatomic, unsafe_unretained)UIBackgroundTaskIdentifier backgroundTaskIdentifier;
@end

2.10分鐘內(nèi)需要做的事

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
 if ([self isMultitaskingSupported]) {
   self.myTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(print) userInfo:nil repeats:YES];
    NSLog(@"\n ===> 程序啟動(dòng) !");
}
    return YES;
}

- (void)print
{
    NSLog(@"更新時(shí)間");
}

3.時(shí)間到了之后應(yīng)該做的事


- (void)applicationDidEnterBackground:(UIApplication *)application {
    NSLog(@"\n ===> 程序進(jìn)入后臺(tái) !");
    self.backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^{
         // 當(dāng)應(yīng)用程序留給后臺(tái)的時(shí)間快要到結(jié)束時(shí) 這個(gè)Block塊將被執(zhí)行
        [self endBackgroundTask];
    }];
}

- (void) endBackgroundTask{
    dispatch_queue_t mainQueue = dispatch_get_main_queue();
    AppDelegate *weakSelf = self;
    dispatch_async(mainQueue, ^(void) {
        AppDelegate *strongSelf = weakSelf;
        if (strongSelf != nil)
        {
            [strongSelf.myTimer invalidate];// 停止定時(shí)器
            // 標(biāo)記指定的后臺(tái)任務(wù)完成
            [[UIApplication sharedApplication]endBackgroundTask:self.backgroundTaskIdentifier];
            // 銷(xiāo)毀后臺(tái)任務(wù)標(biāo)識(shí)符
            strongSelf.backgroundTaskIdentifier = UIBackgroundTaskInvalid;
        }
    });
    
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市于游,隨后出現(xiàn)的幾起案子毁葱,更是在濱河造成了極大的恐慌,老刑警劉巖贰剥,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件倾剿,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蚌成,警方通過(guò)查閱死者的電腦和手機(jī)前痘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)担忧,“玉大人芹缔,你說(shuō)我怎么就攤上這事∑渴ⅲ” “怎么了最欠?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蓬网。 經(jīng)常有香客問(wèn)我窒所,道長(zhǎng),這世上最難降的妖魔是什么帆锋? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任吵取,我火速辦了婚禮,結(jié)果婚禮上锯厢,老公的妹妹穿的比我還像新娘皮官。我一直安慰自己,他們只是感情好实辑,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布捺氢。 她就那樣靜靜地躺著,像睡著了一般剪撬。 火紅的嫁衣襯著肌膚如雪摄乒。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,578評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音馍佑,去河邊找鬼斋否。 笑死,一個(gè)胖子當(dāng)著我的面吹牛拭荤,可吹牛的內(nèi)容都是我干的茵臭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼舅世,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼旦委!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起雏亚,我...
    開(kāi)封第一講書(shū)人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤缨硝,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后罢低,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體追葡,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年奕短,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匀钧。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡翎碑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出之斯,到底是詐尸還是另有隱情日杈,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布佑刷,位于F島的核電站莉擒,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏瘫絮。R本人自食惡果不足惜涨冀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望麦萤。 院中可真熱鬧鹿鳖,春花似錦、人聲如沸壮莹。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)命满。三九已至涝滴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背歼疮。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工杂抽, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人腋妙。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓默怨,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親骤素。 傳聞我的和親對(duì)象是個(gè)殘疾皇子匙睹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容