iPhone - 快速应用切换和iOS 4

时间:2010-11-15 20:08:23

标签: iphone ios4 xamarin.ios multitasking fast-app-switching

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

  • 背景时,保持运行(不需要做背景工作)
  • 恢复时,应用程序会从中断的地方继续

由于UITabBarController中有多个UINavigationControllers,我仍然主要想在我的应用程序上使用相同的屏幕。

我已完成以下所有操作:

  • 确保我正在使用4.1 SDK
  • 进行编译
  • 将UIApplicationExitsOnSuspend设置为false
  • 在我的AppDelegate中处理DidEnterBackground和WillEnterForeground
  • 在DidEnterBackground中调用BeginBackgroundTask,尝试保持我的应用程序打开

我正在使用MonoTouch,但它可能与此无关。我肯定可以在Obj-C中找到答案。

我已经使用Backgrounder在越狱手机上测试了我的应用程序,并且在按下主页按钮后,我看到“app in background”徽章立即消失。我也尝试在我的Info.plist中设置UIBackgroundModes,但无济于事。

我有什么遗漏吗?

或者这是我必须自己实现以恢复我的应用程序的先前状态的东西?在任何地方,我都会阅读它应该只是自动工作的会谈。

4 个答案:

答案 0 :(得分:1)

如果您不想在后台工作,请不要调用beginBackgroundTask。该调用适用于您希望在后台进行某种工作的情况。如果你没有足够快地完成这项工作,iOS将终止你的应用程序。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

我终于在MonoTouch的irc上与某人联系。

在MonoDevelop中,我可以选择制作双iPad / iPhone项目。这导致我的应用程序在部署到设备时就像使用3.2 SDK一样运行。

我认为我的解决方案是安装刚推出的iOS 4.2 SDK,因为这会在iPad上宣传新的多任务功能。

答案 3 :(得分:0)

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