iOS中的程序的五種狀態


1、程序的五種狀態
Not Running:未運行。
Inactive:前台非活動狀態。處於前台,但是不能接受事件處理。
Active:前台活動狀態。處於前台,能接受事件處理。
Background:后台狀態。進入后台,如果又可執行代碼,會執行代碼,代碼執行完畢,程序進行掛起。
Suspended:掛起狀態。進入后台,不能執行代碼,如果內存不足,程序會被殺死。

 

 

3、AppDelegate中的回調方法和通知
(1)回調方法:application:didFinishLaunchingWithOptions:
          本地通知:UIApplicationDidFinishLaunchingNotification
          觸發時機:程序啟動並進行初始化的時候后。
          適宜操作:這個階段應該進行根視圖的創建。
(2)回調方法:applicationDidBecomeActive:
          本地通知:UIApplicationDidBecomeActiveNotification
          觸發時機:程序進入前台並處於活動狀態時調用。
          適宜操作:這個階段應該恢復UI狀態(例如游戲狀態)。
(3)回調方法:applicationWillResignActive:
          本地通知:UIApplicationWillResignActiveNotification
          觸發時機:從活動狀態進入非活動狀態。
          適宜操作:這個階段應該保存UI狀態(例如游戲狀態)。
 (4)回調方法:applicationDidEnterBackground:
          本地通知:UIApplicationDidEnterBackgroundNotification
          觸發時機:程序進入后台時調用。
          適宜操作:這個階段應該保存用戶數據,釋放一些資源(例如釋放數據庫資源)。
(5)回調方法:applicationWillEnterForeground:
          本地通知:UIApplicationWillEnterForegroundNotification
          觸發時機:程序進入前台,但是還沒有處於活動狀態時調用。
          適宜操作:這個階段應該恢復用戶數據。
(6)回調方法:applicationWillTerminate:
          本地通知:UIApplicationWillTerminateNotification
          觸發時機:程序被殺死時調用。
          適宜操作:這個階段應該進行釋放一些資源和保存用戶數據。
 
 4、程序啟動
點擊應用圖標時,會經歷三個狀態:
Not running-->Inactive-->Active 

Not running --> Inactive
調用 application:didFinishLaunchingWithOptions: 發送:UIApplicationDidFinishLaunchingNotification 
Inactive-->Active  


調用 applicationDidBecomeActive: 發送:UIApplicationDidBecomeActiveNotification 

 5、程序Home
根據info.plist中Application does not run in background  /   UIApplicationExitsOnSuspend控制似乎否可以在后台運行或掛起。  
如果可以在后台運行或者掛起會經歷
Active-->Inactive-->Background-->Suspended 

Active-->Inactive 
調用 applicationWillResignActive 發送:UIApplicationWillResignActiveNotification 
Background-->Suspended 
調用 applicationDidEnterBackground 發送:UIApplicationDidEnterBackgroundNotification 

如果不可以后台運行或掛起會經歷
 Active-->Inactive-->Background-->Suspended-->Not Running

Background-->Suspended 
調用 applicationDidEnterBackground 發送:UIApplicationDidEnterBackgroundNotification  
Suspended-->Not Running 
調用 applicationWillTerminate 發送:UIApplicationWillTerminateNotification

6、掛起后,重新運行
Suspended-->Background-->Inactive-->Active

 Background-->Inactive 
 調用 applicationWillEnterForeground 發送:UIApplicationWillEnterForegroundNotification 
 Inactive-->Active  
調用 applicationDidBecomeActive: 發送:UIApplicationDidBecomeActiveNotification 

 7、內存不足,殺死程序
 Background-->Suspended-->Not running
這種情況不會調用任何方法,也不會發送任何通知。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM