当按下Home键时,有没有一种方法可以使应用程序退出而不是进入后台?出于安全原因,如果应用程序不在后台运行而实际上关闭,则会更好。这不是为了用户的安全,而是为了应用程序中的公司数据,因此这不是用户的选择。我找不到除了强制退出之外的任何退出方法,但苹果不鼓励这样做。
当按下Home键时,有没有一种方法可以使应用程序退出而不是进入后台?出于安全原因,如果应用程序不在后台运行而实际上关闭,则会更好。这不是为了用户的安全,而是为了应用程序中的公司数据,因此这不是用户的选择。我找不到除了强制退出之外的任何退出方法,但苹果不鼓励这样做。
请参考iPhone应用程序开发指南中关于退出后台执行的内容:opting out of background execution
如果不希望你的应用程序在退出时继续在后台运行,可以通过在应用程序的Info.plist文件中添加UIApplicationExitsOnSuspend键并将其值设置为YES来明确选择退出后台执行模式。
当应用程序选择退出后台执行模式时,它会在未运行、非活动和活动状态之间循环,并且永远不会进入后台或挂起状态。
当用户点击Home按钮退出应用程序时,应用程序委托的applicationWillTerminate:方法被调用,应用程序有大约五秒钟的时间进行清理和退出操作,然后再被终止并移回未运行状态。
很遗憾,在尝试了所有方法之后,我仍然无法在按下主页按钮时看到我的应用程序退出。即使在 plist 文件中 UIApplicationExitsOnSuspend 为 YES 且类型为布尔值,并且我已从模拟器中删除了应用程序,重启了 Xcode 和模拟器并尝试了所有建议的方法。
最终,我开始调试应用程序,并发现有一个函数阻止应用程序退出。这个函数非常简单,它从网络上下载一些图像,并从 appDelegate 文件的 applicationDidFinishLaunching 中调用。这个函数将创建网络连接和下载数据的任务委托给其他可重用类,在那里我有以下代码:
if(isBackgroundProcessingSupported){
appDelegate.bgTask = [app beginBackgroundTaskWithExpirationHandler:^{}];
[NSURLConnection connectionWithRequest:request delegate:self];
}
最终发现以上代码是导致按下Home键应用程序进入后台的原因。当我注释掉以上代码后,我的应用程序退出而不是进入后台。
注意:早期应用程序支持后台处理时已经存在该代码。
希望这能帮助像我一样苦苦寻找原因的人。