2012-03-28 20 views
4

私のアプリを使っているうちに、突然画面が黒くなることがあります。画面にはまだ電源が供給されています。ボリュームコントロールで再生すると、ボリュームインジケーターが正常に表示されます。画面が突然黒くなる

踏み台[15]::私は私のログに次のメッセージが表示され、その時点で

これを解決する唯一の方法は、ホームボタンを押すことですが、WaveDeck

をスナップショットに失敗しました。私は再びアプリを開いて、それはいいです。

誰もがこれにいくつかの光を当てることができますか? WaveDeck正面から

+6

私は「光を放つ」のような冗談を+1します。 –

+0

しかし、真剣に、あなたのアプリOpenGL、ストーリーボードなどですか? –

+0

これは新しいものです。 +1 –

答えて

2

更新:

我々は悪い方法でアプリのデリゲートでapplicationDidEnterBackgroundを使用しました:beginBackgroundTaskWithExpirationHandlerを使用して仕上げるために、すべてのバックグラウンド処理を依頼し、applicationDidEnterBackground内で実行されているメイン実行ループを維持します。

このようにして、applicationDidEnterBackgroundの方法は、アプリが再びアクティブになったかどうかにかかわらず、すべてのバックグラウンド操作を終了した後で終了しました。

明らかに、OSは、アプリケーションを正しくスナップショットすることができず、バックグラウンド状態から復帰した後、しばらくの間、黒い画面を表示します。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]; 
} 
関連する問題