你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> IOS應用程序生命周期

IOS應用程序生命周期

編輯:IOS開發綜合
 

goofyy小編最近暑假在公司一直做thinkPHP後台開發和前台的開發,小編最近也是好少玩swift和ios了。剛把laravel搞完。小編最近也是從一些基礎的看起。之前做過筆記,但是逐漸忘記。廢話不多說,進入正題

首先像別人一樣,小編說一下ios程序的幾種狀態

ios程序的幾種狀態

未運行: not running 程序未運行

未激活: inactive 程序已經運行,但是沒有接受到事件,通常保持當前狀態

激活 : active 程序已經運行,並且接收到了事件,(點擊,滑動等等事件)。

後台 : background 程序在後台運行,並且能夠執行代碼,一般程序在這個狀態上停留一段事件,然後就進入掛起狀態,但是有一些卻是一直執行,例如某些計步軟件

掛起 :suspended 程序一直在後台,長期處於background。

掛起 : suspended 這一部分程序比較特殊,程序也是留在內存中,但是不發送通知,內存低的時候,就會被清除。

官網上一幅比較經典的圖如下:

1348823833_6296

簡單解釋一下吧:程序首先是處在不運行(not runnig)狀態,然後,用戶點擊程序圖標,然後進入程序,操作程序進入active。點擊home鍵進入後台,進入掛起狀態,這時候如果內存比較低的時候,將會把掛起的程序從內存中清除,當用戶又一次點擊該程序圖標的時候,將會激活程序,讓程序從掛起進入acitive狀態。

理論說了一大遍。然後我們來具體看一下工程文件。

首先是從程序入口出發,main函數,

 

#import 
#import AppDelegate.h

int main(int argc, char * argv[]) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}
首先我們還是從oc程序分析,哈哈。相信這個可以讓我們讀到更多東西,整個main.m文件只看一句話

 

 

return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
首先是返回值調用了UIApplicationMain函數,然後調用個幾個參數,主要是傳AppDelete一個類,看一下AppDelete.m。可以知道AppDelete是一個實現了delegate委托的對象,但是在swift工程當中,main.m被隱藏了,然後我們就可以直接去看AppDelete.swift。簡單看一下AppDelete.swift

 

 

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
這裡用一個元數據的方式聲明了UIApplicationMain調用了AppDeletegate,而AppDeletegate是UIResponder的一個基類,顯然要接受用戶的交互響應,同時也實現了UIApplicationDeletegate的接口(協議),而在實現UIApplicationDeltegate協議的時候,使用了UIApplication對象,UIApplication是當前程序的一個實例,然後我們來畫圖說一下剛剛的關系,有點亂啊。哈哈哈

 

 

Screen

ok。讓我們來結合圖說一下,舉個例子,有個工匠(Application)做鞋子,做的越來越多,需要雇傭工人,然後,他雇傭了一批工人(Appdelegate)..然後告訴他們做鞋子的流程UIApplicationDelegate,也就是說,UIApplication是應用程序的真正實例,同時有一些委托的具體的協議,而被委托者Appdelegate來實現這些協議。而執行的具體的協議的通用對象是UIApplication。所以程序執行的每一步,具體通用對象UIApplication都可以接受到。

 

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        return true
    }

    func applicationWillResignActive(application: UIApplication) {

    }

上面就是IOS設計用到的一個委托設計模式。知道了上面的整個過程,就可以看一下程序的整個生命周期了。

啟動程序

 

開始加載程序 -------> willFinishLaunchingWithOptions

程序加載完畢 ------> didFinishLaunchingWithOptions

 

程序獲取焦點 ------->applicationDidBecomeActive

按下Home鍵

失去焦點 -------->applicationWillResignActive

進入後台 --------->applicationDidEnterBackground

雙擊Home打開程序

從後台回到前台 ------> applicationWillEnterForeground

獲取焦點 ----->applicationDidBecomeActive

內存警告

內存警告 ----->applicationDidReceiveMemoryWaring

退出程序 ------>applicationWillTerminate

給幾個官網給的流程圖大家可以看一下

程序在前台運行

1348884482_7300

程序進入後台

1348884525_3194

 

 

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved