標籤:
//當應用程式將要進入非使用中執行,在此期間,應用程式不接受訊息或事件,比如來電 - (void)applicationWillResignActive:(UIApplication *)application { NSLog(@"應用程式將要進入非使用中,即將進入後台"); } //應用程式已經進入後台運行 - (void)applicationDidEnterBackground:(UIApplication *)application { NSLog(@"如果應用程式支援後台運行,則應用程式已經進入後台運行"); 如果需要退出後台,則在這裡加上:exit(0);} //應用程式將要進入活動狀態執行 - (void)applicationWillEnterForeground:(UIApplication *)application { NSLog(@"應用程式將要進入活動狀態,即將進入前台運行"); } //應用程式已經進入活動狀態 - (void)applicationDidBecomeActive:(UIApplication *)application { NSLog(@"應用程式已進入前台,處於活動狀態"); } //應用程式將要退出,通常用於儲存書架喝一些推出前的清理工作, - (void)applicationWillTerminate:(UIApplication *)application { NSLog(@"應用程式將要退出,通常用於儲存書架喝一些推出前的清理工作"); } //當裝置為應用程式分配了太多的記憶體,作業系統會終止應用程式的運行,在終止前會執行這個方法 //通常可以在這裡進行記憶體清理工作,防止程式被終止 -(void)applicationDidReceiveMemoryWarning:(UIApplication *)application { NSLog(@"系統記憶體不足,需要進行清理工作"); } //當系統時間發生改變時執行 -(void)applicationSignificantTimeChange:(UIApplication *)application { NSLog(@"當系統時間發生改變時執行"); } //當程式載入後執行 -(void)applicationDidFinishLaunching:(UIApplication *)application { NSLog(@"當程式載入後執行"); }
介紹完appdelegate中的方法後,回到我想說的地方
如果在一個viewcontroller中觸發了這些方法(比如按home鍵盤,此程式會進入後台,觸發
applicationWillResignActive、
applicationDidEnterBackground
方法),這時候我們不可能在回到appdelegate中寫邏輯處理,所以,我們可以用觀察者模式來處理這個問題:
- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(AA) name:UIApplicationDidFinishLaunchingNotification object:nil];}
這裡接受到的name可以有很多:
UIApplicationDidFinishLaunchingNotification
UIApplicationDidEnterBackgroundNotification
....appdelegate中對應的方法都有
appDelegate中的委託協議方法以及使用觀察者模式擷取其觸發方法