2015-07-21 54 views
-1
- (void)applicationDidEnterBackground:(UIApplication *)application { 
    //...function_a call  
} 

- (void)applicationWillEnterForeground:(UIApplication *)application { 
    //...function_b call  
} 

- (void)applicationWillTerminate:(UIApplication *)application { 
    //...function_c call  
} 

我使用AppDelegates方法跟蹤我的應用程序。它的工作正常,如果應用程序只是從背景走向前景。但是,當我嘗試從正在運行的應用程序中刪除我的應用程序時,它將首先呼叫- (void)applicationDidEnterBackground:(UIApplication *)application,然後,將會呼叫- (void)applicationWillTerminate:(UIApplication *)application。我如何知道- (void)applicationDidEnterBackground:(UIApplication *)application該應用正在終止。意思是,我不想讓function_a調用兩次,而應該只在應用程序進入後臺時調用它。如何知道應用程序是否在iOS終止?

更新:

設置甚至以下觀察員也於事無補。

UIApplicationDidEnterBackgroundNotification 
UIApplicationWillEnterForegroundNotification 
UIApplicationWillTerminateNotification 

回答

1

- (void)applicationWillTerminate:(UIApplication *)application

這種方法可以讓你的應用程序知道它即將被終止並從內存中清除全部。您應該使用此方法爲您的應用程序執行任何最終清理任務,例如釋放共享資源,保存用戶數據以及使定時器無效。您執行此方法大約需要五秒鐘來執行任何任務並返回。如果該方法在時間到期之前沒有返回,系統可能會完全終止該過程。

對於不支持後臺執行或與iOS 3.x或更低版本鏈接的應用程序,當用戶退出應用程序時總是調用此方法。對於支持後臺執行的應用程序,當用戶退出應用程序時,通常不會調用此方法,因爲在此情況下應用程序只是移至後臺。但是,在應用程序在後臺運行(未掛起)並且系統因某種原因需要終止該應用程序的情況下,可能會調用此方法。

所以這是委託方法,知道什麼時候該應用程序將被終止,或者由用戶或系統,而- (void)applicationWillTerminate:(UIApplication *)application只要運行該應用程序轉到後臺,這並不意味着它已經退出,除非你退出的方式不可見不可見

相關問題