我怎样才能在后台运行iOS4应用程序?

时间:2011-07-20 10:36:19

标签: iphone ios ios4 background

我正在为iOS4开发一款应用。该应用程序由两个主要组件组成,一个应该在后台运行,另一个在屏幕上不断显示并从第一个中获取数据。这就是问题所在:第一个组件工作正常,直到它放在后台。此时它停止发送数据。这是为什么?有没有解决方法?

谢谢。

4 个答案:

答案 0 :(得分:3)

如果您不使用VoIP,音频或GPS,则只能使用任务完成模式(后台限制为10分钟)。 要做到这一点,你必须通过以下方式告诉要启动任务的操作系统:

UIApplication*    app = [UIApplication sharedApplication];

UIBackgroundTaskIdentifier bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
    [app endBackgroundTask:bgTask];
    bgTask = UIBackgroundTaskInvalid;
}];

当你完成后,你可以用:

结束它
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;

请记住,如果您的运行时间超过10分钟,则操作系统会终止您的应用。

applicationDidEnterBackground:中你遇到的问题是你的代码仍然阻塞了主线程,这就是为什么当你退出应用程序时它被杀死的原因。

如果你想开始在applicationDidEnterBackground:中执行代码,你应该开始后台任务并发送你想做的任何事情dispatch_async(queue, block_with_your_code);

您可以阅读更多内容here

答案 1 :(得分:1)

如果没有,您只能在后台运行VOIP,音频或基于位置的应用。 因此,除非您的应用属于其中一个类别,否则无法让您的应用在后台运行。

答案 2 :(得分:1)

Apple只允许某些类型的应用在后台运行,例如导航和VOIP应用,仅举两例。但即便是那些仅限于必要的任务。

唯一的选择是“长跑背景任务” - 这允许应用程序在后台继续工作长达十分钟(此“宽限期”的确切持续时间可能会发生变化,afaik)。您可以在像Hipstamatic这样的应用程序上观察到这一点,即使将应用程序移动到后台,它也会在图像上完成后期制作。

答案 3 :(得分:1)

正如其他人指出的那样,没有真正的方法可以做到这一点,但有一些应用程序使用了解决方法。您基本上可以在后台播放用户iPod库中的曲目,这样您的应用就可以在后台保持较长时间的工作。您可以在Tapbots' site上了解更多相关信息。