屏幕突然变黑

时间:2012-03-28 16:18:43

标签: iphone ios

在使用我的应用程序时,屏幕有时突然而且莫名其妙地变黑。屏幕仍然通电,如果我使用音量控制,音量指示器显示正常。

解决此问题的唯一方法是按主页按钮,此时我在日志中看到以下消息:

  

SpringBoard [15]:无法快照WaveDeck

当我再次打开应用程序时,没关系。

任何人都可以对此有所了解吗?

2 个答案:

答案 0 :(得分:2)

从WaveDeck前线更新:

我们在应用程序的委托中使用applicationDidEnterBackground的方式很糟糕:要求所有后台操作使用beginBackgroundTaskWithExpirationHandler完成并保持主要runloop在applicationDidEnterBackground内运行。

这样,只有在完成所有后台操作后,applicationDidEnterBackground的方法才会结束,无论应用是否再次激活。

显然,操作系统无法正确“快照”应用程序,并且在从背景状态返回后的一段时间内会显示黑屏 - 当applicationDidEnterBackground的委托功能结束时。

答案 1 :(得分:0)

我遇到了类似的问题。将长时间保存操作放在下一个runloop中,这样applicationDidEnterBackground立即返回,系统的快照机制正常工作。

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    // don't block ios's snapshoting, avoid screen suddenly turns black
    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(saveAppState) object:nil];
    [self performSelector:@selector(saveAppState) withObject:nil afterDelay:0];
}
- (void)saveAppState
{
    [self longtimeSave];
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(saveAppState) object:nil];
}