日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AppDelegate

發(fā)布時(shí)間:2023/12/10 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AppDelegate 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、基礎(chǔ)知識(shí)

  1)?main.m指定了程序的入口點(diǎn)

UIApplicationMain(argc, argv,nil,NSStringFromClass([StartingPointAppDelegateclass]));

  2)?AppDelegate的入口點(diǎn)

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

  3)?前臺(tái)和后臺(tái)程序切換執(zhí)行方法

- (void)applicationWillEnterForeground:(UIApplication *)application {} 程序?qū)⒅糜谇芭_(tái),程序啟動(dòng)的時(shí)候不會(huì)相應(yīng)此方法,而是按下home以后再次回復(fù)程序的時(shí)候響應(yīng)。
- (void)applicationDidBecomeActive:(UIApplication *)application {} 程序已經(jīng)置于前臺(tái),程序剛啟動(dòng)也會(huì)響應(yīng)此方法。按下home以后再次回來也會(huì)響應(yīng)。
- (void)applicationWillResignActive:(UIApplication *)application {} 程序?qū)⒁顺龊笈_(tái),按下home以后,程序不會(huì)立即消失,系統(tǒng)會(huì)先調(diào)用此方法。
- (void)applicationDidEnterBackground:(UIApplication *)application {} 程序已經(jīng)置于后臺(tái)了,按home以后,程序完全消失會(huì)調(diào)用。

?

二、程序后臺(tái)運(yùn)行

  1)在沒有使用GCD時(shí),當(dāng)app被按home鍵退出后,app僅有最多5秒鐘的時(shí)候做一些保存或清理資源的工作。但是在使用GCD后,app最多有10分鐘的時(shí)間在后臺(tái)長久運(yùn)行。這個(gè)時(shí)間可以用來做清理本地緩存,發(fā)送統(tǒng)計(jì)數(shù)據(jù)等工作。

  注意:
????  當(dāng)多程序切換的時(shí)候,程序不會(huì)被關(guān)閉,在系統(tǒng)規(guī)定的一段時(shí)間內(nèi)可以正常執(zhí)行。
????  當(dāng)一個(gè)程序使用的內(nèi)存太大,而導(dǎo)致系統(tǒng)內(nèi)存不足的時(shí)候,程序會(huì)被關(guān)閉,任務(wù)會(huì)終止,直到下次啟動(dòng)程序,并退到后臺(tái)的時(shí)候,后臺(tái)任務(wù)才會(huì)重新執(zhí)行。
? ?   運(yùn)行的條件必須在軟件不被關(guān)閉的情況下可用。

// AppDelegate.h@property (assign, nonatomic) UIBackgroundTaskIdentifier* backgroundTaskIdentifier;// AppDelegate.m- (void)applicationDidEnterBackground:(UIApplication *)application {[self beingBackgroundUpdateTask];NSLog(@"加上你需要多久運(yùn)行的代碼"); NSLog(@"剩余執(zhí)行時(shí)間: %f", [[UIApplication sharedApplication] backgroundTimeRemaining]);[self endBackgroundUpdateTask]; }-(void) beingBackgroundUpdateTask {self.backgroundTaskIdentifier = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{[self endBackgroundUpdateTask];}]; }-(void) endBackgroundUpdateTask {[[UIApplication sharedApplication] endBackgroundTask: self.backgroundTaskIdentifier];self.backgroundTaskIdentifier = UIBackgroundTaskInvalid;}

  2)?每隔一段時(shí)間,系統(tǒng)自動(dòng)執(zhí)行的任務(wù)(設(shè)置的值必須大于等于600)

    注意:
? ?    當(dāng)多程序切換的時(shí)候,此任務(wù)也會(huì)被關(guān)閉。
? ?     ?運(yùn)行的條件必須在軟件不被關(guān)閉的情況下可用

    執(zhí)行的必要條件:
????    找到程序的 plist 配置文件,增加:
????    鍵:UIBackgroundModes 類型:Array
???    ?在 Item0 里面設(shè)置類型:String,值:voip

[[UIApplication sharedApplication] setKeepAliveTimeout:600 handler:^{//執(zhí)行你想要執(zhí)行的任務(wù),同時(shí)可以配合第一種任務(wù),以增加某些同步方法的執(zhí)行時(shí)間,比如說下載數(shù)據(jù)等}];

?

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/eileenleung/p/3505413.html

總結(jié)

以上是生活随笔為你收集整理的AppDelegate的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。