iOS-前後台切換(APP運行期間生命週期)

來源:互聯網
上載者:User

標籤:

iOS的應用程式的生命週期,還有程式是運行在前台還是後台,應用程式各個狀態的變換,這些對於開發人員來說都是很重要的。 iOS系統的資源是有限的,應用程式在前台和在背景狀態是不一樣的。在後台時,程式會受到系統的很多限制,這樣可以提高電池的使用和使用者體驗。
//開發app,我們要遵循apple公司的一些指導原則,原則如下:
1、應用程式的狀態
狀態如下:
Not running 未運行 程式沒啟動
Inactive 未啟用 程式在前台運行,但不能接受事件的處理.當應用要從一個狀態切換到另一個不同狀態時,中途 過度會短暫停留在此狀態.
Active 啟用 程式在前台運行而且接收到了事件。這是應用在前台運行時所處的正常狀態.
Backgroud 後台 程式在後台而且還在執行代碼.大多數將要進入 Suspended 狀態的應用,會先短暫進入此狀態.如果應用請求更多額外的執行時間,該應用會在此狀態保持更長一段時間.另外,如果一個應用要求啟動時直接進入後台運行,這樣的應用會直接從 NotRunning 狀態進入 Background 狀態,中途不會經過 Inactive 狀態.比如,沒有介面的應用(當然並不特指沒有介面的應用),總之,如果應用直接進入 Background 狀態,該應用介面不會被顯示出來.
Suspended 掛起 應用處在後台,並且沒有執行任何代碼.系統會自動將應用轉入該狀態,並且不會發出任何通知.當處在該狀態時,應用依然駐留記憶體,但不執行任何程式碼.當系統發生低記憶體警告時,系統會將出於 Suspended 狀態的應用徹底移出記憶體,從而為前台應用釋放更多的記憶體.

是程式狀態變化圖:

各個程式運行狀態時代理的回調:

- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions     // 告訴代理進程啟動但還沒進入狀態儲存.   應用程式將要啟動時自動調用該方法,該方法是應用程式啟動時第一次執行自訂代碼的機會.- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions    // 告訴代理啟動基本完成程式準備開始運行.  應用程式啟動時自動調用該方法,開發人員可以在該方法中執行初始化相關的代碼.- (void)applicationDidBecomeActive:(UIApplication *)application      //應用程式入活動狀態執行.     應用在轉入前台,並進入活動狀態時回調該方法(當應用從啟動到進入前台,或從後台轉入前台都會調用該方法),可重寫該方法執行最後的準備工作.- (void)applicationWillResignActive:(UIApplication *)application   // 當應用程式將要入非使用中執行(應用正要從前台運行狀態離開時將會調用該方法),在此期間,應用程式不接收訊息或事件,比如來電話了- (void)applicationDidEnterBackground:(UIApplication *)application  // 用程式正出於 Background 狀態,且隨時可能進入Suspended 狀態時將會調用該方法.   所以要設定後台繼續運行,則在這個函數裡面設定即可- (void)applicationWillEnterForeground:(UIApplication *)application//當程式從後台將要重新回到前台,但暫時還沒有到達 Active 狀態時將會調用該方法.  這個剛好跟上面的那個方法相反。- (void)applicationWillTerminate:(UIApplication *)application//該應用程式即將被終止時調用該方法,如果應用當前處在 Suspended 狀態,此方法將不會被調用..通常是用來儲存資料和一些退出前的清理工作。這個需要要設定UIApplicationExitsOnSuspend的索引值。- (void)applicationDidFinishLaunching:(UIApplication*)application當程式載入後執行

在上面8個方法對應的方法中鍵入NSLog列印。
現在啟動程式看看執行的順序:
啟動程式
lifeCycle[40428:11303] willFinishLaunchingWithOptions
lifeCycle[40428:11303] didFinishLaunchingWithOptions
lifeCycle[40428:11303] applicationDidBecomeActive
按下home鍵
lifeCycle[40428:11303] applicationWillResignActive
lifeCycle[40428:11303] applicationDidEnterBackground
雙擊home鍵,再開啟程式
lifeCycle[40428:11303] applicationWillEnterForeground
lifeCycle[40428:11303] applicationDidBecomeActive
2、應用程式的生命週期
2.1、載入應用程式進入前台

iOS-前後台切換(APP運行期間生命週期)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.