UIApplication設(shè)置代理屬性
@property(nullable, nonatomic, assign) id<UIApplicationDelegate> delegate;-
UIApplication的Delegate 對(duì)象是誰(shuí)?
-
AppDelegate.h遵循了代理協(xié)議UIApplicationDelegate
@interface AppDelegate : UIResponder <UIApplicationDelegate> -
AppDelegate.m實(shí)現(xiàn)了代理方法。
-
-
AppDelegate做什么用?- 處理應(yīng)用程序的生命周期事件(如程序啟動(dòng)和關(guān)閉)
- 處理系統(tǒng)事件(如來(lái)電)
- 處理內(nèi)存警告
- ....
-
AppDelegate實(shí)現(xiàn)了協(xié)議,App生命周期的一些方法.- application: didFinishLaunchingWithOptions: - 應(yīng)用程序啟動(dòng)完成的時(shí)候調(diào)用 - applicationWillResignActive: - 當(dāng)我們應(yīng)用程序即將失去焦點(diǎn)的時(shí)候調(diào)用 - applicationDidEnterBackground: - 當(dāng)我們應(yīng)用程序完全進(jìn)入后臺(tái)的時(shí)候調(diào)用 - applicationWillEnterForeground: -當(dāng)我們應(yīng)用程序即將進(jìn)入前臺(tái)的時(shí)候調(diào)用 - applicationDidBecomeActive: - 當(dāng)我們應(yīng)用程序完全獲取焦點(diǎn)的時(shí)候調(diào)用, 只有當(dāng)一個(gè)應(yīng)用程序完全獲取到焦點(diǎn),才能與用戶交互. - applicationWillTerminate: - 當(dāng)我們應(yīng)用程序即將關(guān)閉的時(shí)候調(diào)用 - applicationDidReceiveMemoryWarning: - 當(dāng)應(yīng)用程序收到內(nèi)存警告時(shí)調(diào)用 - 方法的調(diào)用順序
- App剛啟動(dòng)時(shí)
-
didFinishLaunchingWithOptions- App啟動(dòng)完畢 -
applicationDidBecomeActive- App獲取焦點(diǎn)(我能夠和用戶進(jìn)行交互了)
-
- 退出App, 進(jìn)入后臺(tái)時(shí)(CMD + shift + h)
-
applicationWillResignActive- 即將失去焦點(diǎn) -
applicationDidEnterBackground- 進(jìn)入后臺(tái)
-
- 再次點(diǎn)擊App
注意: 此時(shí)的App已在后臺(tái),并不是重新打開一個(gè)全新的App。-
applicationWillEnterForeground- 即將進(jìn)入前臺(tái) -
applicationDidBecomeActive- App獲取焦點(diǎn)
-
- 真正退出App (CMD + shift + h + h)
-
applicationWillResignActive- 即將失去焦點(diǎn) -
applicationDidEnterBackground- 進(jìn)入后臺(tái) -
applicationWillTerminate- App即將關(guān)閉
-
- 收到內(nèi)存警告時(shí) (2次警告,第3次直接崩系統(tǒng))
-
applicationDidReceiveMemoryWarning- 內(nèi)存警告
-
- App剛啟動(dòng)時(shí)
- 移動(dòng)操作系統(tǒng)有個(gè)缺點(diǎn),App很容易受到干擾。
比如: 玩游戲的過(guò)程中,一個(gè)電話打進(jìn)來(lái)。接完電話, 回過(guò)頭玩游戲,需要從頭開始。- 解決思路:
- 在"退出App,進(jìn)入后臺(tái)"時(shí),對(duì)游戲數(shù)據(jù)進(jìn)行保存.
- 打完電話,再次點(diǎn)擊游戲時(shí),也就是"即將進(jìn)入前臺(tái) ,App獲取焦點(diǎn)"時(shí),將游戲數(shù)據(jù)進(jìn)行恢復(fù)。

