19

重新启动应用程序时如何知道应用程序是由用户终止还是由iOS终止>

'By user' 的意思是“通过双击 Home 按钮并按下 - 按钮”。被用户杀死

'By iOS' 表示“应用程序变为后台运行状态,iOS 10 分钟后终止应用程序”

4

2 回答 2

17

如果您的应用程序处于挂起状态,applicationWillTerminate则无论谁杀死了应用程序 iOS 或用户,都不会被调用。

只有当您的应用程序处于后台并且它被杀死(由 iOS 或用户)时,您applicationWillTerminate才会调用“后台”一词意味着它在后台运行而不是处于挂起状态。

只需阅读此参考

applicationWillTerminate:——让您知道您的应用程序正在被终止。如果您的应用程序被暂停,则不会调用此方法。

这是各种状态的表 在此处输入图像描述

背景 - 应用程序在后台并执行代码。大多数应用程序在被暂停的过程中会短暂进入此状态。但是,请求额外执行时间的应用程序可能会在此状态下保持一段时间。此外,直接在后台启动的应用程序会进入此状态而不是非活动状态。有关如何在后台执行代码的信息,请参阅后台执行。

于 2015-05-13T06:03:57.713 回答
10

如果系统资源不足,iOS 可能会终止您的应用程序 - 如果发生这种情况,您将看到applicationWillTerminate.

过去,如果用户杀死了应用程序(任务管理器,通过按钮双击然后点击红色的“-”),它是一个 SIGKILL 并且不会调用 applicationWillTerminate。2013 年年中的一份报告表明这种情况已经改变,applicationWillTerminate现在被称为。

您可以使用 NSUserDefaults 写入一些状态位,applicationWillTerminate以注意该函数已被调用,并且可能是系统终止而不是用户终止。

于 2011-09-08T05:23:55.173 回答