直到iOS7,当我的应用程序落后时,它在操作系统拿走CPU之前大约需要10秒。 在iOS7中,这似乎已经发生了变化,因此CPU几乎立刻就消失了。这造成了很多问题。
我知道-[UIApplication beginBackgroundTaskWithExpirationHandler:]
,但是CPU消失得如此之快,以至于使用当前的实现,我的应用程序在知道是否应该调用beginBackground...
之前被杀死。
1)这是iOS7的已知行为吗?
2)是否可以更改分配给任务的默认CPU时间到达后台,以便它是几秒而不是少于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];
}
尝试一下,让我们知道会发生什么(你真的需要也结束到期处理程序中的后台任务,但首先要做的事情。)