2012-03-28 98 views
4

使用我的應用程序時,屏幕有時會突然莫名其妙地變黑。屏幕仍然通電,如果我使用音量控制器,音量指示器顯示得很好。屏幕突然變黑黑色

來解決這個問題的唯一方法是按home鍵,在這一點上,我看到在我的日誌中看到以下消息:

跳板[15]:無法快照WaveDeck

當我再次打開應用程序時,它很好。

任何人都可以對此有所瞭解嗎?從WaveDeck前

+6

我喜歡'灑一些光'笑話+1。 – 2012-03-28 16:20:29

+0

但現在嚴重,你的應用程序OpenGL,故事板等? – 2012-03-28 16:21:14

+0

這是一個新的。 +1 – 2012-03-28 17:29:33

回答

2

更新:

我們使用applicationDidEnterBackground在應用程序的代表在一個糟糕的方式:要求所有的後臺操作完成了使用beginBackgroundTaskWithExpirationHandler並保持內部applicationDidEnterBackground運行主runloop。

這種方式applicationDidEnterBackground只有在完成所有後臺操作後才結束,無論該​​應用程序是否重新啓動。

顯然,操作系統無法正確「快照」應用程序,並且在從後臺狀態返回後的某個時間會放置黑屏 - 當代理函數applicationDidEnterBackground結束時。

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]; 
}