国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS 如何讓一個程序在后臺運行不被掛起,不死掉

2019-11-09 14:10:09
字體:
來源:轉載
供稿:網友

iOS 如何讓一個程序在后臺運行不被掛起,不死掉

轉載http://blog.csdn.net/u010818357/article/details/51221002

支持原創,轉載就注明出處。

蘋果后臺運行的原理如何解決代碼實現

蘋果后臺運行的原理

大家都知道,當一個程序進入后臺時,除了一些特定的操作比如用戶的音頻,定位等能夠在info.plist里修改設置進行后臺操作以外,其他的很難能夠進行獲取,比如下載一個東西,就比如我們知道的某視頻播放器(這里為了排除廣告嫌疑,不進行提名)也不能完成后臺掛起狀態的緩存,我個人覺得這點優化的不是很好。有的人應該知道蘋果哪怕后臺掛起一個東西,在appdelegate 里進入后臺執行的方法,也只能存活600s。 進入后臺執行的代理方法是

- (void)applicationDidEnterBackground:(UIApplication *)application{}1234512345

我們可以在這個代理方法里進行一些后臺執行的操作,但是只有600s 的存活時間。

如何解決

假如在appdelegate的代理方法里開啟一個后臺任務

- (void)applicationDidEnterBackground:(UIApplication *)application{ //開啟一個后臺任務 taskId = [application beginBackgroundTaskWithExpirationHandler:^{ }]; }//下面是聲明的任務IDUIBackgroundTaskIdentifier taskId;1234567891012345678910

在任務結束的時候會回調block,所以也就是說600s 以后會回調。我們需要做的就是在程序還未進行到600s 還未死掉的時候進行一個結束程序,新建一個后臺程序的操作,這樣以來程序就能無止境的在后臺進行運行,你可以做一系列的操作。下面廢話不多說,我把寫的一個Demo的例子粘在下面,請大家參考,有不懂得可以提問。

//進入后臺模式的代理

UIBackgroundTaskIdentifier taskId;- (void)applicationDidEnterBackground:(UIApplication *)application{    //開啟一個后臺任務    taskId = [application beginBackgroundTaskWithExpirationHandler:^{        //結束指定的任務        [application endBackgroundTask:taskId];    }];    [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerAction:) userInfo:nil repeats:YES];    }1234567891011121312345678910111213

//定時器的方法

- (void)timerAction:(NSTimer *)timer {    count++;    if (count % 500 == 0) {        UIApplication *application = [UIApplication sharedApplication];        //結束舊的后臺任務        [application endBackgroundTask:taskId];        //開啟一個新的后臺        taskId = [application beginBackgroundTaskWithExpirationHandler:NULL];    }    NSLog(@"%d",count);}12345678910111213141234567891011121314

其實很簡單,這個demo就是給一個定時器讓它一直打印,如果不來回關閉任務創建任務程序會在600s 以后死掉,但是做此操作之后程序就會一直在后臺執行。 PS:寫在Appdelegate里面不要忘了給self.window 一個rootViewController.

希望可以幫到需要的人,第一次寫博客,有什么不足的地方希望大家及時指出,也希望大家多多支持。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 水城县| 龙南县| 通州区| 手游| 舒城县| 陵水| 威信县| 八宿县| 仁化县| 牡丹江市| 安化县| 宜丰县| 吴堡县| 邓州市| 乾安县| 沁源县| 阿瓦提县| 虹口区| 横山县| 民权县| 榕江县| 林周县| 阳山县| 长葛市| 苍山县| 仪征市| 壶关县| 兴宁市| 丹江口市| 滁州市| 台东县| 茶陵县| 潞西市| 永州市| 柘城县| 伊宁县| 南汇区| 建平县| 高尔夫| 渝北区| 方城县|