如果我通过单击主页按钮将我的应用程序发送到后台并等待一段时间(可能是1或2小时)。
如果我现在点按应用程序图标会发生什么?
该应用程序会重新启动还是只是从背景到前景?
快速的“序幕”:
欢迎来到堆栈溢出(SO)的精彩世界,我自己在这里很新,但发现使用欢迎你更友好!
万一你还没有:在你问一个问题之前,请仔细看看,以防其他人问过同样的问题,但如果你不能从中得到答案,那么你当然应该问你的问题。自己的问题。
回答:
这个问题没有明确的答案,因为它取决于。当您点击主页按钮时,您的应用程序会进入,如您所说,背景并且仍然在某种程度上运行。但是在完成之后,应用程序的生命周期由iOS(设备操作系统)决定。 iOS控制并检查设备的内存和CPU使用情况(等等),如果您在应用程序处于后台时启动另一项活动,使设备的可用内存和CPU等不足,iOS将终止任何应用程序不浪费这些资源(或电池等)的背景。如果是这样,您的应用将在下次点击时重新启动。
虽然如果你不做任何表现很重的事情,iOS更有可能让你的设备在后台运行。
我不确定具体的条件和iOS的工作原理,但我会说你的应用程序很可能已经终止并在“后台”1或2小时后重新启动。如果设备在此期间被锁定,则适用其他条件。
为了正确记录这个,我建议在苹果开发者网站上阅读Apples documentation for handling App State Transitions和/或api for UIApplicationDelegate。您可以在哪里看到AppDelegate中的不同方法以及它们如何交互。
编辑(回答评论):
func applicationDidEnterBackground(_ application: UIApplication) {
exit(0)
}
查看这些帖子的答案以获取更多信息:call exit(0) in iphone app,objc - Proper way to exit iPhone application?。
我个人建议你解决它,不要这样做。还要记住,当你的应用程序进入后台时,将调用applicationWillResignActive
,当用户再次打开它时,applicationDidBecomeActive
会被调用,因此如果你想刷新任何数据,你可以从那里重新加载或者其他东西。每当我们按下设备中的主页按钮时,应用程序就会释放当前正在使用的内存并移至后台阶段。但是,当我们再次按下此应用程序应用程序图标时,它会将应用程序置于iPhone屏幕顶部并再次占用内存。这绝对不是重新启动,因为重新启动取决于UIApplicationDelegate方法didFinishLaunchingWithOptions。当我们将应用程序从后台切换到前台时,将触发applicationWillEnterForeground方法。
为了更好地理解,以下链接可能有用