iOS7后台任务立即失去CPU时间

时间:2013-12-03 10:37:28

标签: background ios7

直到iOS7,当我的应用程序落后时,它在操作系统拿走CPU之前大约需要10秒。 在iOS7中,这似乎已经发生了变化,因此CPU几乎立刻就消失了。这造成了很多问题。

我知道-[UIApplication beginBackgroundTaskWithExpirationHandler:],但是CPU消失得如此之快,以至于使用当前的实现,我的应用程序在知道是否应该调用beginBackground...之前被杀死。

1)这是iOS7的已知行为吗?

2)是否可以更改分配给任务的默认CPU时间到达后台,以便它是几秒而不是少于1?

1 个答案:

答案 0 :(得分:0)

这不应该是完全必要的,但是遇到问题,你应该把它放在你的AppDelegate中:

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    // do this *immediately*
    backgroundTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
        // handle stuff
    }];

    // do what you need to do, including whether you need to go on.
    // If there is asyncronicity in here, it might get more complicated,
    // since at the end of that async stuff, you've always go to do this
    // call:

    [UIApplication sharedApplication] endBackgroundTask:backgroundTaskId];
}

尝试一下,让我们知道会发生什么(你真的需要结束到期处理程序中的后台任务,但首先要做的事情。)