检测应用程序何时关闭的委托方法是什么。
我的意思是当用户点按此按钮时:
我知道下面的方法:
- (void)applicationDidEnterBackground:(UIApplication *)application;
- (void)applicationWillEnterForeground:(UIApplication *)application;
但他们的工作并不像我预期的那样。例如,我使用了我的应用程序,并导航到某个屏幕。如果我锁定屏幕并返回应用程序,应用程序调用applicationWillEnterForeground但我不需要这个,因为我仍然在这个视图(例如测试屏幕视图),我不需要检查任何更改。但是,如果我的应用程序关闭,我开始从启动应用程序导航,例如主屏幕。因此,如果我的应用程序已关闭并且我在主屏幕上,我需要检查以前是否有一些操作(例如,如果我通过测试屏幕视图上的测试)并显示此视图控制器(仅在我关闭应用程序的情况下)只是锁定它或输入背景)。
感谢您的帮助。
答案 0 :(得分:19)
你无法检测到这一点。从iOS App Programming Guide(“应用程序终止”标题):
重要提示:如果您的应用目前暂停,则不会调用
applicationWillTerminate:
方法。即使您使用iOS SDK 4及更高版本开发应用程序,您仍然必须 准备好让您的应用程序在没有任何通知的情况下被杀死该 用户可以使用多任务UI显式杀死应用程序。此外, 如果内存受限制,系统可能会删除应用程序 记忆,以腾出更多空间。暂停的应用程序不会收到通知 终止,但如果您的应用当前正在后台运行 状态(而不是暂停),系统调用 applicationWillTerminate:您的应用委托的方法。你的应用不能 从此方法请求额外的后台执行时间。
答案 1 :(得分:9)
你做不到。当您的应用程序以这种方式被杀死时,它不会被告知任何事情。该应用程序被操作系统杀死,没有任何警告。
当您的应用进入后台时,您无法知道是否会重新开始或只是返回到前台。因此,当应用程序进入后台时,您必须正确处理事情。
当应用再次启动时,请恢复您需要的任何状态。
答案 2 :(得分:2)
在iOS上,您无法检查。那就是:这个过程是SIGKILL的。我知道可能能够工作的一种方式依赖于杀死应用程序的事实,必须先按下主页按钮暂停它。
因此,您可以在用户使用应用时收集操作,并在用户暂停应用时将其提交到已保存的位置。如果用户恢复,请重置列表并再次开始收集信息。但是,如果用户暂停应用并且您从未收到简历,则在下一个应用启动时,您可以阅读该列表并从那里恢复。
HTH
答案 3 :(得分:2)
您可以实施UIApplicationDelegate
代表的-applicationWillTerminate:
方法来响应终止事件。但是,并不保证在所有情况下都可以调用它,所以你不应该依赖它被调用。根据{{3}}:
如果您的应用在终止时正在运行(在前台或后台),系统将调用您的应用代理的
applicationWillTerminate:
方法,以便您可以执行任何所需的清理。您可以使用此方法保存用于在后续启动时将应用程序还原到其当前状态的用户数据或应用程序状态信息。您的方法有大约5秒的时间来执行任何任务并返回。如果它没有及时返回,应用程序将被终止并从内存中删除。重要提示:如果您的应用目前暂停,则不会调用
applicationWillTerminate:
方法。