如何知道应用程序是由用户还是iOS终止并重新启动应用程序?
“由用户”意味着“双击Home按钮并按下-按钮”。被用户终止。
“由iOS”意味着“应用程序变为后台运行状态,并在10分钟后由iOS终止应用程序”。
“由用户”意味着“双击Home按钮并按下-按钮”。被用户终止。
“由iOS”意味着“应用程序变为后台运行状态,并在10分钟后由iOS终止应用程序”。
如果您的应用处于挂起状态,无论是 iOS 还是用户杀死了应用程序,applicationWillTerminate
都将不会被调用。
只有当您的应用程序在后台运行并被终止时(无论是由 iOS 还是用户),才会调用 applicationWillTerminate
。这里的“后台”指的是应用程序在后台运行而不是挂起状态。
请参考这个链接
applicationWillTerminate:通知您的应用程序即将被终止。如果您的应用程序已挂起,则不会调用此方法。
下面是各种状态的表格
后台 - 应用程序在后台执行代码。大多数应用程序在进入挂起状态之前会短暂地进入此状态。但是,在请求额外执行时间的应用程序中,该状态可能会持续一段时间。此外,直接启动到后台的应用程序将进入此状态而非非活动状态。有关如何在后台执行代码的信息,请参阅后台执行。
如果系统资源不足,iOS可能会终止您的应用程序-如果发生这种情况,您将看到applicationWillTerminate
。
过去,如果用户杀死了应用程序(通过任务管理器,通过双击按钮然后点击红色“ - ”),那么这是一个SIGKILL,并且不会调用applicationWillTerminate
。 2013年中期的一份报告表明,这种情况已经发生改变,现在会调用applicationWillTerminate
。
您可以使用NSUserDefaults在applicationWillTerminate
中写入一些状态位以记录是否被该函数所调用,这大概是一个系统终止而不是用户终止。
applicationWillTerminate
。 - Steve Onorato