app delegate的函數與使用時機
1、-(BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions
告訴代理進程啓動但還沒進入狀態保存
返回值說明:如果app不能處理的URL或者user activity,以及app不執行
application:performActionForShortcutItem:completionHandler:
,返回no,否則返回yes。如果通過遠程推送喚醒app則忽略此函數返回值
2、-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
告訴代理啓動基本完成程序準備開始運行
程序首次已經完成啓動時執行,若直接啓動,launchOptions中沒有數據;否則,launchOptions將包含對應方式的內容
3、-(void)applicationDidBecomeActive:(UIApplication *)application
當應用程序入活動狀態執行,使用這個方法重啓在inactive階段暫停的任務或未開啓的任務
例如,重啓timer或者加快OpenGL ES幀速率,或者將刷新app界面(app之前在後臺),掉用這個方法是,app也將發出一個通知
UIApplicationDidBecomeActiveNotification
4、-(void)applicationWillResignActive:(UIApplication *)application
當應用程序將要入非活動狀態執行,在此期間,應用程序不接收消息或事件,程序將要失去Active狀態時調用,比如按下Home鍵或有電話信息進來。對應applicationWillEnterForeground(將進入前臺),這個方法用來
暫停正在執行的任務;
禁止計時器;
減少OpenGL ES幀率;
若爲遊戲應暫停遊戲;
5、- (void)applicationDidEnterBackground:(UIApplication *)application
當程序被推送到後臺的時候調用。所以要設置後臺繼續運行,則在這個函數裏面設置即可。對應applicationDidBecomeActive(已經變成前臺),這個方法用來
釋放共享資源;
保存用戶數據(寫到硬盤);
作廢計時器;
保存足夠的程序狀態以便下次恢復;
6、- (void)applicationWillEnterForeground:(UIApplication *)application
當程序從後臺將要重新回到前臺時候調用,對應applicationWillResignActive(將進入後臺)。這個方法用來撤銷applicationWillResignActive中做的改變。
7、- (void)applicationWillTerminate:(UIApplication *)application
當程序將要退出是被調用,通常是用來保存數據和一些退出前的清理工作。這個需要要設置UIApplicationExitsOnSuspend的鍵值。