转到后台后恢复应用程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转到后台后恢复应用程序相关的知识,希望对你有一定的参考价值。

我有一个针对Iphone 3G,3GS和4G的iPhone应用程序。我的问题是,行为与Iphone 3G&4不同(我没有机会在3GS iphone上测试我的应用程序)。

不同的是:

在iPhone 4上:

  1. 我运行我的应用程序,我正常播放。
  2. 我点击iPhone主页按钮,所以应用程序转到后台
  3. 当我重新使用我的应用程序时,它会从上次执行上下文继续。

在iPhone 3G上:

  1. 我运行我的应用程序,我正常播放。
  2. 我点击iPhone主页按钮,所以应用程序转到后台?!
  3. 当我重新使用我的应用程序时,它会从第一次启动时重新启动。

这些是在所有Iphone设备上具有相同行为的方法吗?

或者我必须自己处理这个问题?

答案

ios4增加了运行到应用程序的后台,而不是在iPhone 3G上。对于这些情况,您需要手动存储和恢复状态。

有一些类可以帮助你解决这个问题 - 比如Github上的DTResurrectionKit

另一答案

为了给你一个更长的解释:

在iOS 4.0中,Apple推出了Background Apps。使用Background,失去前景的应用程序会被暂停,但可以重新激活到它们所在的同一点,而开发人员不必为此做任何事情。基本上,将保存Applications VM并重新创建相同的上下文。但是,后台应用程序可能会在后台运行时随时被杀死。

然而,苹果公司在这张图片中留下了几个较旧的设备,即使它们有4.0。 iPhone 3G和iPod Touch 2. Generation没有启用后台应用程序。

因此,如果您想在所有设备上使用相同或至少相似的行为,那么您将不得不自己动手。在Appdelegate中的ApplicationWillTerminate:函数中,您必须存储所需的当前位置/其他信息并从那里重新创建。

另一答案

我认为你在iPhone 3G上运气不佳,因为后台应用程序仅支持从运行iOS 4.x及更高版本的iPhone 3GS开始的设备。当然,当应用程序终止并在重新启动时恢复时,没有什么可以阻止您保存应用程序上下文。

可在此处找到3G支持的iOS 4功能的确认:

http://support.apple.com/kb/HT4204

以上是关于转到后台后恢复应用程序的主要内容,如果未能解决你的问题,请参考以下文章

恢复后停止重新创建片段?

从后台堆栈恢复片段时的 savedInstanceState

替换或删除后台堆栈上现有片段的代码不起作用

为啥片段恢复后再次调用onLoadFinished?

恢复片段后android地图停止响应

添加到后台堆栈时如何保持片段状态?