【问题标题】:How to know whether an app is being terminating in iOS?如何知道应用程序是否在 iOS 中终止?
【发布时间】:2015-07-21 21:29:15
【问题描述】:
- (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 调用两次,而是应该只在应用程序进入后台时调用。

更新:

设置跟随观察者也无济于事。

UIApplicationDidEnterBackgroundNotification
UIApplicationWillEnterForegroundNotification
UIApplicationWillTerminateNotification

【问题讨论】:

    标签: ios appdelegate terminate


    【解决方案1】:

    - (void)applicationWillTerminate:(UIApplication *)application:

    此方法让您的应用知道它即将被终止并完全从内存中清除。您应该使用此方法为您的应用程序执行任何最终清理任务,例如释放共享资源、保存用户数据和使计时器无效。您对此方法的实现大约有五秒钟的时间来执行任何任务并返回。如果该方法在时间到期之前没有返回,系统可能会完全杀死该进程。

    对于不支持后台执行或链接到 iOS 3.x 或更早版本的应用程序,当用户退出应用程序时始终调用此方法。对于支持后台执行的应用程序,当用户退出应用程序时通常不会调用此方法,因为在这种情况下应用程序只是移动到后台。但是,在应用程序在后台运行(未挂起)并且系统出于某种原因需要终止它的情况下,可能会调用此方法。

    所以这是 to go 委托方法,用于知道应用程序何时会被用户或系统终止,而 - (void)applicationWillTerminate:(UIApplication *)application 在应用程序进入后台时运行,它并不意味着它已退出,除非您的退出意味着不可见

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-12
      • 2011-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多