iOS應用程式的生命週期

2022-09-04 12:00:16 字數 3410 閱讀 9972

對於ios應用程式,關鍵是要知道你的應用程式是否正在前台或後台執行。由於系統資源在ios裝置上較為有限,乙個應用程式必須在後台與前台有不同的行為。作業系統也會限制你的應用程式在後台的執行,以提高電池壽命,並提高使用者與前台應用程式的體驗。當應用程式在前台和後台之間切換時,作業系統將會通知您的應用程式。你可以通過這些通知來修改你的應用程式的行為。

當你的應用程式在前台活動時,系統會傳送觸控事件給它進行處理。在uikit的基礎設施做了大部分的事件傳遞給你的自定義物件工作。所有您需要做的是覆蓋在相應的物件的方法來處理這??些事件。對於控制項,uikit會通過處理你的觸控事件,或者其他一些有趣的事情發生時呼叫您的自定義**,比如當文字欄位中的值更改。

1、應用程式的狀態

not running未執行:程式沒啟動。

inactive未啟用:程式在前台執行,不過沒有接收到事件。在沒有事件處理情況下程式通常停留在這個狀態。

active啟用:程式在前台執行而且接收到了事件。這也是前台的乙個正常的模式。

backgroud後台:程式在後台而且能執行**,大多數程式進入這個狀態後會在在這個狀態上停留一會。時間到之後會進入掛起狀態(suspended)。有的程式經過特殊的請求後可以長期處於backgroud狀態。

suspended掛起:程式在後台不能執行**。系統會自動把程式變成這個狀態而且不會發出通知。當掛起時,程式還是停留在記憶體中的,當系統記憶體低時,系統就把掛起的程式清除掉,為前台程式提供更多的記憶體。

2、各個程式執行狀態時**的**

①告訴**程序啟動但還沒進入狀態儲存

②告訴**啟動基本完成程式準備開始執行

③當應用程式將要入非活動狀態執行,在此期間,應用程式不接收訊息或事件,比如來**

④當應用程式進入活動狀態執行

⑤當程式被推送到後台的時候呼叫。所以要設定後台繼續執行,則在這個函式裡面設定即可

]; } 

⑥當程式從後台將要重新回到前台時候呼叫  

⑧當程式載入後執行

程式啟動時:

2014-07-01 15:55:14.706 lifecycle[5845:60b] ①告訴**程序啟動但還沒進入狀態儲存

2014-07-01 15:55:14.708 lifecycle[5845:60b] ②告訴**啟動基本完成程式準備開始執行

2014-07-01 15:55:14.709 lifecycle[5845:60b] ④當應用程式進入活動狀態執行

按下home鍵返回主介面:

2014-07-01 15:56:11.756 lifecycle[5845:60b] ③當應用程式將要入非活動狀態執行

2014-07-01 15:56:11.814 lifecycle[5845:60b] ⑤當程式被推送到後台的時候呼叫

再次開啟程式:

2014-07-01 15:57:19.200 lifecycle[5845:60b] ⑥當程式從後台將要重新回到前台時候呼叫

2014-07-01 15:57:19.201 lifecycle[5845:60b] ④當應用程式進入活動狀態執行

3、載入應用程式進入前台

4、載入應用程式進入後台

5、基於警告式響應中斷

①停止timer 和其他週期性的任務

②停止任何正在執行的請求

④如果是遊戲那就暫停它

⑤減少opengl es的幀率

⑥掛起任何分發的佇列和不重要的操作佇列(你可以繼續處理網路請求或其他時間敏感的後台任務)

6、進入後台執行

當應用程式進入後台時,我們應該做些什麼?

儲存使用者資料或狀態資訊,所有沒寫到磁碟的檔案或資訊,在進入後台時,最後都寫到磁碟去,因為程式可能在後台被殺死。

釋放盡可能釋放的記憶體。

如果還需要長時間的執行任務,可以在該方法中呼叫 

nslog(@"begin background task with expiration handler"); 

}]; 

應用程式在後台時的記憶體使用:請求後台執行時間和啟動執行緒來首席執行官時間執行的任務。

在後台時,每個應用程式都應該釋放最大的記憶體。系統努力的保持更多的應用程式在後台同時 執行。不過當記憶體不足時,會終止一些掛起的程式來**記憶體,那些記憶體最大的程式首先被終止。

事實上,應用程式應該的物件如果不再使用了,那就應該盡快的去掉強引用,這樣編譯器可以**這些記憶體。如果你想快取一些物件提公升程式的效能,你可以在進入後台時,把這些物件去掉強引用。

下面這樣的物件應該盡快的去掉強引用:

①物件③任何沒用而且可以輕易建立的物件

在後台時,為了減少程式占用的記憶體,系統會自動在**一些系統幫助你開闢的記憶體。比如:

①系統**core animation的後備儲存。

②去掉任何系統引用的快取

③去掉系統管理資料快取強引用

7、返回前台執行

在暫停狀態的應用程式必須準備處理任何排隊的通知時,它返回到前台或後台執行狀態。暫停的應用程式不執行任何**,因此不能處理與方向的變化,時間的變化,偏好的變化,以及許多其他會影響應用程式的外觀或狀態的通知。為了確保這些更改不會丟失,系統排隊許多相關的通知,並把它們傳遞給應用程式,只要它開始再次執行**(無論是在前景或背景)。為了防止由偏快轉為超載與它恢復時通知您的應用程式,該系統凝聚事件,並提供乙個單一的通知(每個相關型別),反映了淨變化,因為你的應用程式被暫停。

8、程式終止

程式只要符合以下情況之一,只要進入後台或掛起狀態就會終止:

①ios4.0以前的系統

③裝置不支援多工

注意:使用者可以手工關閉應用程式。

9、the main run loop  主執行迴圈

ios 應用程式生命週期

一 ios應用程式狀態機一共有五種狀態 1.not running 應用還沒有啟動,或者應用正在執行但是途中被系統停止。2.inactive 當前應用正在前台執行,但是並不接收事件 當前或許正在執行其它 一般每當應用要從乙個狀態切換到另乙個不同的狀態時,中途過渡會短暫停留在此狀態。3.active ...

IOS應用程式生命週期

程式的生命週期 a.程式的生命週期是指應用程式啟動到應用程式結束整個階段的全過程 二 ios應用程式5種狀態 1.not running 應用還沒有啟動,或者應用正在執行但是途中被系統停止 2.inactive 當前應用正在前台執行,但是並不接收事件 當前或許正在執行其它 一般每當應用要從乙個狀態切...

iOS 應用程式生命週期

剛買了關東昇老師的ios書,來記錄一下自己感覺有用的東西 首先說一下ios應用的五中狀態 這裡主要說一些主要的方法 程式啟動並進行初始化是呼叫 程式從活動狀態進入非活動狀態的時候呼叫 程式進入後台時呼叫該方法 程式進入前台但是還未處於活動狀態時呼叫該方法 程式進入前台並處於活動狀態時呼叫 應用程式被...