在使用我的应用程序时,屏幕有时突然而且莫名其妙地变黑。屏幕仍然通电,如果我使用音量控制,音量指示器显示正常。
解决此问题的唯一方法是按主页按钮,此时我在日志中看到以下消息:
SpringBoard [15]:无法快照WaveDeck
当我再次打开应用程序时,没关系。
任何人都可以对此有所了解吗?
答案 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];
}