AppDelegate中幾個(gè)常用的回調(diào)調(diào)用時(shí)機(jī)

本篇文章主要介紹一些UIApplicationDelegate中幾個(gè)常用的回調(diào)方法的調(diào)用時(shí)機(jī)。

以幫助你判斷哪些方法倒底放到哪個(gè)回調(diào)中去實(shí)現(xiàn)。

1. – (void)applicationDidFinishLaunching:(UIApplication *)application;

此方法基本已經(jīng)棄用,改用第2個(gè)方法代替备恤。

2. – (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions NS_AVAILABLE_IOS(3_0);

當(dāng)應(yīng)用程序啟動(dòng)時(shí)(不包括已在后臺的情況下轉(zhuǎn)到前臺)族沃,調(diào)用此回調(diào)误辑。launchOptions是啟動(dòng)參數(shù),假如用戶通過點(diǎn)擊push通知啟動(dòng)的應(yīng)用尤泽,這個(gè)參數(shù)里會(huì)存儲一些push通知的信息欣簇。

3. – (void)applicationDidBecomeActive:(UIApplication *)application;

// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.

當(dāng)應(yīng)用程序全新啟動(dòng),或者在后臺轉(zhuǎn)到前臺坯约,完全激活時(shí)熊咽,都會(huì)調(diào)用這個(gè)方法。如果應(yīng)用程序是以前運(yùn)行在后臺闹丐,這時(shí)可以選擇刷新用戶界面横殴。

4. – (void)applicationWillResignActive:(UIApplication *)application;

// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.

// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.

當(dāng)應(yīng)用從活動(dòng)狀態(tài)主動(dòng)到非活動(dòng)狀態(tài)的應(yīng)用程序時(shí)會(huì)調(diào)用這個(gè)方法。這可導(dǎo)致產(chǎn)生某些類型的臨時(shí)中斷(如傳入電話呼叫或SMS消息)卿拴∩缆兀或者當(dāng)用戶退出應(yīng)用程 序,它開始過渡到的背景狀態(tài)堕花。使用此方法可以暫停正在進(jìn)行的任務(wù)文狱,禁用定時(shí)器,降低OpenGL ES的幀速率缘挽。游戲應(yīng)該使用這種方法來暫停游戲瞄崇。

調(diào)用時(shí)機(jī)可能有以下幾種:鎖屏,按HOME鍵壕曼,下接狀態(tài)欄苏研,雙擊HOME鍵彈出低欄,等情況腮郊。

5. – (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url;

// Will be deprecated at some point, please replace with application:openURL:sourceApplication:annotation:

這個(gè)方法已不再支持摹蘑,可能會(huì)在以后某個(gè)版本中去掉。建議用下面第6個(gè)方法代替

6. – (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation NS_AVAILABLE_IOS(4_2);

// no equiv. notification. return NO if the application can’t open for some reason

當(dāng)用戶通過其它應(yīng)用啟動(dòng)本應(yīng)用時(shí)轧飞,會(huì)回調(diào)這個(gè)方法纹蝴,url參數(shù)是其它應(yīng)用調(diào)用openURL:方法時(shí)傳過來的庄萎。

7. – (void)applicationDidReceiveMemoryWarning:(UIApplication *)application;

// try to clean up as much memory as possible. next step is to terminate app

當(dāng)應(yīng)用可用內(nèi)存不足時(shí),會(huì)調(diào)用此方法塘安,在這個(gè)方法中糠涛,應(yīng)該盡量去清理可能釋放的內(nèi)存。如果實(shí)在不行兼犯,可能會(huì)被強(qiáng)行退出應(yīng)用忍捡。

8. – (void)applicationWillTerminate:(UIApplication *)application;

// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.

當(dāng)應(yīng)用退出,并且進(jìn)程即將結(jié)束時(shí)會(huì)調(diào)到這個(gè)方法切黔,一般很少主動(dòng)調(diào)到砸脊,更多是內(nèi)存不足時(shí)是被迫調(diào)到的,我們應(yīng)該在這個(gè)方法里做一些數(shù)據(jù)存儲操作纬霞。

9. // one of these will be called after calling -registerForRemoteNotifications

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken NS_AVAILABLE_IOS(3_0);

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error NS_AVAILABLE_IOS(3_0);

當(dāng)客戶端注冊遠(yuǎn)程通知時(shí)凌埂,會(huì)回調(diào)上面兩個(gè)方法。

如果成功诗芜,則回調(diào)第一個(gè)瞳抓,客戶端把deviceToken取出來發(fā)給服務(wù)端,push消息的時(shí)候要用伏恐。

如果失敗了孩哑,則回調(diào)第二個(gè),可以從error參數(shù)中看一下失敗原因翠桦。

注:注冊遠(yuǎn)程通知使用如下方法:

UIRemoteNotificationType t=UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound;

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:t];

10. – (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo NS_AVAILABLE_IOS(3_0);

當(dāng)應(yīng)用在前臺運(yùn)行中横蜒,收到遠(yuǎn)程通知時(shí),會(huì)回調(diào)這個(gè)方法销凑。

當(dāng)應(yīng)用在后臺狀態(tài)時(shí)丛晌,點(diǎn)擊push消息啟動(dòng)應(yīng)用,也會(huì)回調(diào)這個(gè)方法斗幼。

11. – (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification NS_AVAILABLE_IOS(4_0);

當(dāng)應(yīng)用收到本地通知時(shí)會(huì)調(diào)這個(gè)方法茵乱,同上面一個(gè)方法類似。

如果在前臺運(yùn)行狀態(tài)直接調(diào)用孟岛,如果在后臺狀態(tài),點(diǎn)擊通知啟動(dòng)時(shí)督勺,也會(huì)回調(diào)這個(gè)方法

本地通知可見另一篇文章:http://bluevt.org/?p=70

12. – (void)applicationDidEnterBackground:(UIApplication *)application NS_AVAILABLE_IOS(4_0);

// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.

// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.

當(dāng)用戶從臺前狀態(tài)轉(zhuǎn)入后臺時(shí)渠羞,調(diào)用此方法。使用此方法來釋放資源共享智哀,保存用戶數(shù)據(jù)次询,無效計(jì)時(shí)器,并儲存足夠的應(yīng)用程序狀態(tài)信息的情況下被終止后瓷叫,將應(yīng)用 程序恢復(fù)到目前的狀態(tài)屯吊。如果您的應(yīng)用程序支持后臺運(yùn)行送巡,這種方法被調(diào)用,否則調(diào)用applicationWillTerminate:用戶退出盒卸。

13. – (void)applicationWillEnterForeground:(UIApplication *)application NS_AVAILABLE_IOS(4_0);

// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.

當(dāng)應(yīng)用在后臺狀態(tài)骗爆,將要進(jìn)行動(dòng)前臺運(yùn)行狀態(tài)時(shí),會(huì)調(diào)用此方法蔽介。

如果應(yīng)用不在后臺狀態(tài)摘投,而是直接啟動(dòng),則不會(huì)回調(diào)此方法虹蓄。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末犀呼,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子薇组,更是在濱河造成了極大的恐慌外臂,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件律胀,死亡現(xiàn)場離奇詭異宋光,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)累铅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門跃须,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人娃兽,你說我怎么就攤上這事菇民。” “怎么了投储?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵第练,是天一觀的道長。 經(jīng)常有香客問我玛荞,道長娇掏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任勋眯,我火速辦了婚禮婴梧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘客蹋。我一直安慰自己塞蹭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布讶坯。 她就那樣靜靜地躺著番电,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上漱办,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天这刷,我揣著相機(jī)與錄音,去河邊找鬼娩井。 笑死暇屋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的撞牢。 我是一名探鬼主播率碾,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼屋彪!你這毒婦竟也來了所宰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤畜挥,失蹤者是張志新(化名)和其女友劉穎仔粥,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蟹但,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡躯泰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了华糖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片麦向。...
    茶點(diǎn)故事閱讀 40,115評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖客叉,靈堂內(nèi)的尸體忽然破棺而出诵竭,到底是詐尸還是另有隱情,我是刑警寧澤兼搏,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布卵慰,位于F島的核電站,受9級特大地震影響佛呻,放射性物質(zhì)發(fā)生泄漏裳朋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一吓著、第九天 我趴在偏房一處隱蔽的房頂上張望鲤嫡。 院中可真熱鬧,春花似錦绑莺、人聲如沸暖眼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至赡突,卻和暖如春对扶,著一層夾襖步出監(jiān)牢的瞬間区赵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工浪南, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留笼才,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓络凿,卻偏偏與公主長得像骡送,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子絮记,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評論 2 355

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