2015-07-21 101 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只要运行该应用程序转到后台,这并不意味着它已经退出,除非你退出的方式不可见不可见

相关问题