每 個iP每 個iPhone應(yīng)用程序都有一個UIApplication,UIApplication是iPhone應(yīng)用程序的開始并且負(fù)責(zé)初始化并顯示 UIWindow,并負(fù)責(zé)加載應(yīng)用程序的第一個UIView到UIWindow窗體中。UIApplication的另一個任務(wù)是幫助管理應(yīng)用程序的生命 周期脓豪,而UIApplication通過一個名字為UIApplicationDelegate的代理類來履行這個任務(wù)内斯。盡管UIApplication 會負(fù)責(zé)接收事件,而UIApplicationDelegate則決定應(yīng)用程序如何去響應(yīng)這些事件害碾,UIApplicationDelegate可以處理 的事件包括應(yīng)用程序的生命周期事件(比如程序啟動和關(guān)閉)、系統(tǒng)事件(比如來電赦拘、記事項警告)慌随,本文會介紹如何加載應(yīng)用程序的UIView到 UIWindow以及如何利用UIApplicationDelegate處理系統(tǒng)事件。
通常對于UIApplication讀者是沒必要修改它的躺同,只需要知道UIApplication接收系統(tǒng)事件即可阁猜,而如何編寫代碼來處理這些系統(tǒng)事件則 是程序員的工作。處理系統(tǒng)事件需要編寫一個繼承自UIApplicationDelegate接口的類笋籽,而UIApplicationDelegate接 口提供生命周期函數(shù)來處理應(yīng)用程序以及應(yīng)用程序的系統(tǒng)事件蹦漠,這些生命周期函數(shù)如下表所示:
1、- (void)applicationWillResignActive:(UIApplication *)application{
說明:當(dāng)應(yīng)用程序即將失去焦點時车海,被調(diào)用笛园。比如電話呼叫隘击,都將導(dǎo)致應(yīng)用失去焦點 ,或者當(dāng)用戶退出應(yīng)用程序研铆。
}
2埋同、- (void)applicationDidBecomeActive:(UIApplication *)application
說明:當(dāng)應(yīng)用程序獲取到焦點后
3、- (void)applicationDidEnterBackground:(UIApplication *)application{
說明:當(dāng)應(yīng)用進入后臺時被調(diào)用棵红,如果要讓應(yīng)用在后臺運行凶赁,需要在這里進行設(shè)置
,使用這個方法來釋放共享資源逆甜,保存用戶數(shù)據(jù)虱肄,廢止定時器,并存儲足夠的應(yīng)用程序狀態(tài)信息的情況下被終止后交煞,將應(yīng)用程序恢復(fù)到目前的狀態(tài)咏窿。
}
4、- (void)applicationWillEnterForeground:(UIApplication *)application
說明:當(dāng)應(yīng)用從后臺將要重新回到前臺時候調(diào)用素征,可以在這里恢復(fù)數(shù)據(jù)集嵌,或刷新界面。
5御毅、- (void)applicationWillTerminate:(UIApplication *)application
說明:當(dāng)程序?qū)⒁顺鍪潜徽{(diào)用根欧,通常是用來保存數(shù)據(jù)和一些退出前的清理工作。這個需要要設(shè)置UIApplicationExitsOnSuspend的鍵值(自動設(shè)置)端蛆。不支持多任務(wù)的時候調(diào)用
6凤粗、- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
說明:iPhone設(shè)備只有有限的內(nèi)存,如果為應(yīng)用程序分配了太多內(nèi)存操作系統(tǒng)會終止應(yīng)用程序的運行欺税,在終止前會執(zhí)行這個方法侈沪,通常可以在這里進行內(nèi)存清理工作防止程序被終止
7晚凿、- (void)applicationSignificantTimeChange:(UIApplication*)application
說明:當(dāng)系統(tǒng)時間發(fā)生改變時執(zhí)行
8、- (void)applicationDidFinishLaunching:(UIApplication*)application
說明:當(dāng)應(yīng)用加載完成后被調(diào)用
9瘦馍、- (void)application:(UIApplication)application willChangeStatusBarFrame:(CGRect)newStatusBarFrame
說明:當(dāng)StatusBar將要變化時執(zhí)行
10歼秽、- (void)application:(UIApplication*)application willChangeStatusBarOrientation:
(UIInterfaceOrientation)newStatusBarOrientation
duration:(NSTimeInterval)duration
說明:當(dāng)StatusBar方向?qū)⒁兓瘯r執(zhí)行
11、- (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url
說明:打開url時
12情组、- (void)application:(UIApplication*)application didChangeStatusBarOrientation:(UIInterfaceOrientation)oldStatusBarOrientation
說明:當(dāng)StatusBar框方向變化完成后執(zhí)行
13燥筷、- (void)application:(UIApplication*)application didChangeSetStatusBarFrame:(CGRect)oldStatusBarFrame
說明:當(dāng)StatusBar框變化完成后執(zhí)行