20160512 UIApplecation shuxun

來源:互聯網
上載者:User

標籤:

 

2016-03-22 13:58:37.681 HBLifeCircleTest[2705:146296] -[AppDelegate application:didFinishLaunchingWithOptions:]2016-03-22 13:58:37.685 HBLifeCircleTest[2705:146296] -[AppDelegate applicationDidBecomeActive:]//點擊home鍵2016-03-22 14:00:06.786 HBLifeCircleTest[2705:146296] -[AppDelegate applicationWillResignActive:]
2016-03-22 14:00:07.503 HBLifeCircleTest[2705:146296] -[AppDelegate applicationDidEnterBackground:]//點擊應用2016-03-22 14:00:11.134 HBLifeCircleTest[2705:146296] -[AppDelegate applicationWillEnterForeground:]2016-03-22 14:00:11.647 HBLifeCircleTest[2705:146296] -[AppDelegate applicationDidBecomeActive:]
//雙擊home退出2016-03-22 14:00:19.463 HBLifeCircleTest[2705:146296] -[AppDelegate applicationWillResignActive:]
2016-03-22 14:00:28.677 HBLifeCircleTest[2705:146296] -[AppDelegate applicationDidEnterBackground:]2016-03-22 14:00:28.680 HBLifeCircleTest[2705:146296] -[AppDelegate applicationWillTerminate:]


IOS的應用程式一共有5種狀態。

  • Not running(未運行):程式未啟動
  • Inactive(未啟用):其他兩個狀態切換時出現的短暫狀態。唯一在此狀態停留時間比較長的情況是:當使用者鎖屏時?或者系統提示使用者去響應Alert視窗(如來電、資訊)時
  • Active(啟用):在螢幕上顯示的正常運行狀態,該狀態下可以接收使用者輸入並更新顯示
  • Backgroud(後台):程式在後台且能執行代碼。使用者按下Home鍵不久後進入此狀態(先進入了Inactive狀態,再進入Background狀態),然後會迅速進入掛起狀態(Suspended)。有的程式經過特殊的請求後可以長期處於Backgroud狀態
  • Suspended(掛起):程式在後台不能執行代碼。普通程式在進入Background狀態不久後就會進入此狀態。當掛起時,程式還是停留在記憶體中的,當系統記憶體低時,系統就把掛起的程式清除掉,為前景程式提供更多的記憶體

關於Active和Inactive的切換:
應用程式在前台時有2種狀態:Active和Inactive。大多數情況下,Inactive狀態只是其他兩個狀態切換時出現的短暫狀態(不是任意兩個狀態之間的切換都會進入Inactive,見圖),如開啟應用,它會從Not Running先進入Inactive再進入Active;如前後台應用程式切換時,Inactive會在Active和Background之間短暫出現。但是也有其他情況,Active和Inactive可以在前台運行時進行切換,比如系統彈出Alert,此時應用會從Active切換到Inactive,直到使用者確認再返回Actvie;再如使用者拉下通知頁,也會發生Active和Inactive的切換;還有來電但拒接、雙擊Home鍵但返回原應用等都不進入Background,而只是在Active和Inactive切換。


狀態切換圖

1.application:didFinishLaunchingWithOptions:
程式首次已經完成啟動時執行,若直接啟動,launchOptions中沒有資料;否則,推送,3Dtouch等方式開啟應用。launchOptions將包含對應方式的內容。
2.applicationWillResignActive(將進入後台)
程式將要失去Active狀態時調用,比如按下Home鍵或有電話資訊進來。對應applicationWillEnterForeground(將進入前台),這個方法用來
暫停正在執行的任務;
禁止計時器;
減少OpenGL ES幀率;
若為遊戲應暫停遊戲;
總結為一個字:停!
3.applicationDidEnterBackground(已經進入後台)
程式已經進入後台時調用,對應applicationDidBecomeActive(已經變成前台),這個方法用來
釋放共用資源;
儲存使用者資料(寫到硬碟);
作廢計時器;
儲存足夠的程式狀態以便下次恢複;
總結為4個字:釋放、儲存!
4.applicationWillEnterForeground(將進入前台)
程式即將進去前台時調用,對應applicationWillResignActive(將進入後台)。這個方法用來撤銷applicationWillResignActive中做的改變。
5.applicationDidBecomeActive(已經進入前台)
程式已經變為Active(前台)時調用。對應applicationDidEnterBackground(已經進入後台)。若程式之前在後台,最後在此方法內重新整理使用者介面。
6.applicationWillTerminate
程式即將退出時調用。記得儲存資料,如

其他類使用相應NotificationCenter通知來感知這些狀態變化。

 


文/HustBroventure(簡書作者)
原文連結:http://www.jianshu.com/p/3ffe5bd4c949
著作權歸作者所有,轉載請聯絡作者獲得授權,並標註“簡書作者”。
 

20160512 UIApplecation shuxun

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.