代码之家  ›  专栏  ›  技术社区  ›  jonathanpeppers

iPhone-快速应用程序切换和iOS 4

  •  4
  • jonathanpeppers  · 技术社区  · 14 年前

    我正试图在我的iPhone应用程序中获得以下功能:

    • 在后台,保持运行(不需要做任何后台工作)
    • 当继续运行时,应用程序将从中断的位置恢复

    我主要希望我的应用程序上的同一个屏幕仍然打开,因为一个UITabBarController中有几个uinavigationcontroller。

    我已经做了以下所有工作:

    • 确保使用4.1sdk编译
    • 设置UIAptudioExtSunSturn到false
    • 在我的AppDelegate中处理dienterbackground和WillEnterForeground
    • 在DidEnterBackground中调用BeginBackgroundTask,尝试保持我的应用程序打开

    我用的是MonoTouch,但这可能不重要。当然,我可以用Obj-C来回答。

    我用Backgrounder在一个越狱手机上测试了我的应用程序,我看到“应用程序在后台”徽章在按下home按钮后立即消失。我还尝试在Info.plist中设置UIBackgroundModes,但没有成功。

    我有什么遗漏吗?

    或者这是我必须自己实现的东西,才能恢复我的应用程序以前的状态?我读过的每一个地方的谈话都应该是自动的。

    4 回复  |  直到 14 年前
        1
  •  1
  •   William Jockusch    14 年前

    如果你不想在后台工作,不要调用beginBackgroundTask。这个电话是针对那些你想在后台工作的情况。如果你没有足够快的完成这项工作,iOS将终止你的应用程序。

        2
  •  1
  •   Jason    14 年前

    当我升级到iOS 4.x时,我的MT应用程序开始显示这种行为,而无需我做任何事情。iOS应该帮你处理。

        3
  •  1
  •   jonathanpeppers    14 年前

    我终于和MonoTouch的irc上的人取得了联系。

    在MonoDevelop中,有一个选项可以制作一个双iPad/iPhone项目,我使用了这个项目。这会导致我的应用程序在部署到设备时表现为与3.2sdk一起运行。

    我想我的解决方案是安装刚刚发布的iOS 4.2sdk,因为它在iPad上发布了新的多任务特性。

        4
  •  0
  •   Jeff Kelley    14 年前

    您不仅需要支持进入后台,还需要支持应用程序已终止的情况。在你的应用程序初始化代码中,你应该恢复它所处的状态。例如,当您按下视图控制器时,使用 NSUserDefaults 存储当前显示屏幕的值,然后在开始读取该值并显示关联屏幕时。