UIApplication - 03Delegate和生命周期

  • UIApplication設(shè)置代理屬性
    @property(nullable, nonatomic, assign) id<UIApplicationDelegate> delegate;

  • UIApplicationDelegate 對(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)存警告

  • 移動(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ù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容