如果我通过单击“主页”按钮将应用程序发送到后台,然后等待一段时间(也许1或2个小时)。
如果我现在点击应用程序图标会发生什么?
应用会重新启动还是只是从背景移至前景?
答案 0 :(得分:0)
快速的“序幕”:
欢迎来到精彩的堆栈溢出(SO)世界,我本人在这里还很陌生,但是无论如何,欢迎使用它更加友好!
以防万一,如果您还没有:在问一个问题之前,请仔细研究一下,以防其他人问同样的事情,但是如果您不能从中得到答案,那么您应该当然问你自己的问题。
答案:
这个问题没有确定的答案,因为它取决于。如您所说,当您点击主屏幕按钮时,您的应用会进入背景,并且在一定程度上仍在运行。但是,这样做后,应用程序的生命周期取决于iOS(设备操作系统)。 iOS会控制并检查设备的内存和CPU使用率(等),如果您在后台运行应用程序而又导致设备的可用内存和CPU等资源不足时,iOS将终止其中的所有应用程序不浪费这些资源(或电池等)的背景。如果是这样,您的应用程序将在您下次点击时重新启动。
尽管您不做任何性能提升的事情,iOS更有可能使您的设备在后台运行。
我不确定确切的条件以及iOS能否正常运行,但是我想说它很可能您的应用将被终止,并在“后台”运行1或2个小时后重新启动。如果设备在此期间被锁定,则还需要满足其他条件。
有关正确的文档记录,我建议在Apple开发者网站上阅读Apples documentation for handling App State Transitions和/或api for UIApplicationDelegate。在哪里可以看到AppDelegate中不同方法的作用以及它们之间的交互方式。
编辑(回答评论):
每次进入后台都会重新启动该应用程序的方法吗?
嗯,是的,但也没有。我对此并不十分确定(以前从未遇到过“愿望”),但是您可以在AppDelegate中做到这一点:(它基本上会使您的应用程序崩溃,但是请注意,苹果不鼓励您在任何地方崩溃自己的应用程序)。这样做可能会阻止该应用通过Apple Store审核过程(即您的应用可能不被App Store接受)。
func applicationDidEnterBackground(_ application: UIApplication) {
exit(0)
}
查看这些帖子的答案以获取更多信息:call exit(0) in iphone app,objc - Proper way to exit iPhone application?。
我个人建议您解决它,而不要这样做。 也,请记住,当您的应用进入后台时,将调用applicationWillResignActive
,而当用户再次打开它时,applicationDidBecomeActive
会被调用,因此您可以从那里进行重新加载或其他操作如果要刷新任何数据。
答案 1 :(得分:0)
每当我们按下设备中的主页按钮时,应用程序就会释放当前正在使用的内存并进入后台阶段。但是,当我们再次按此应用程序应用程序图标时,它将使该应用程序位于iPhone屏幕上方,并再次占用内存。这绝对不是重新启动,因为重新启动取决于 UIApplicationDelegate 方法 didFinishLaunchingWithOptions 。当我们将应用程序从后台切换到前台时,将触发 applicationWillEnterForeground 方法。
为了更好地理解,以下链接可能会有用