我有一个针对Iphone 3G,3GS和4G的iPhone应用程序。我的问题是,行为与Iphone 3G&4不同(我没有机会在3GS iphone上测试我的应用程序)。
不同的是:
在iPhone 4上:
在iPhone 3G上:
这些是在所有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功能的确认: