IOS應用程序的5中狀態

jopen 9年前發布 | 17K 次閱讀 iOS開發 移動開發 IOS

1. Not Running(非運行狀態)。應用沒有運行或被系統終止。

2. Inactive(前臺非活動狀態)。應用正在進入前臺狀態,但是還不能接受事件處理。

3.Active(前臺活動狀態)。應用進入前臺狀態,能接受事件處理。

4.Background(后臺狀態)。應用進入后臺后,依然能夠執行代碼。如果有可執行的代碼,就會執行代碼,如果沒有可執行的代碼或者將可執行的代碼執行完畢,應用會馬上進入掛起狀態。

5. Suspended(掛起狀態)。處于掛起的應用進入一種“冷凍”狀態,不能執行代碼。如果系統內存不夠,應用會被終止。

在應用狀態躍遷的過程中,iOS系統會回調AppDelegate中的一些方法,并且發送一些通知。實際上,在應用的生命周期中用到的方法和通知很多,

狀態躍遷過程中應用回調的方法和本地通知

application:didFinishLaunchingWithOptions:  UIApplicationDidFinishLaunchingNotification

應用啟動并進行初始化時會調用該方法并發出通知。這個階段會實例化根視圖控制器

applicationDidBecomeActive: UIApplicationDidBecomeActiveNotification

應用進入前臺并處于活動狀態時調用該方法并發出通知。這個階段可以恢復UI的狀態(例如游戲狀態等)

applicationWillResignActive: UIApplicationWillResignActiveNotification

應用從活動狀態進入到非活動狀態時調用該方法并發出通知。這個階段可以保存UI的狀態(例如游戲狀態等)

applicationDidEnterBackground: UIApplicationDidEnterBackgroundNotification

應用進入后臺時調用該方法并發出通知。這個階段可以保存用戶數據,釋放一些資源(例如釋放數據庫資源等)

applicationWillEnterForeground: UIApplicationWillEnterForegroundNotification

應用進入到前臺,但是還沒有處于活動狀態時調用該方法并發出通知。這個階段可以恢復用戶數據

applicationWillTerminate: UIApplicationWillTerminateNotification

應用被終止時調用該方法并發出通知,但內存清除時除外。這個階段釋放一些資源,也可以保存用戶數據

為了便于觀察應用程序的運行狀態,我們為AppDelegate.m中的方法添加一些日志輸出,具體代碼如下:

@implementation AppDelegate

  • (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions { NSLog(@"%@", @"application:didFinishLaunchingWithOptions:"); …… return YES; }
  • (void)applicationWillResignActive:(UIApplication *)application {
    NSLog(@"%@", @"applicationWillResignActive:"); }
  • (void)applicationDidEnterBackground:(UIApplication *)application {
    NSLog(@"%@", @"applicationDidEnterBackground:"); }
  • (void)applicationWillEnterForeground:(UIApplication *)application {
    NSLog(@"%@", @"applicationWillEnterForeground:"); }
  • (void)applicationDidBecomeActive:(UIApplication *)application {
    NSLog(@"%@", @"applicationDidBecomeActive:"); }
  • (void)applicationWillTerminate:(UIApplication *)application {
    NSLog(@"%@", @"applicationWillTerminate:"); } @end</pre>
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!