2012-03-28 60 views
4

Während der Verwendung meiner App wird der Bildschirm manchmal plötzlich und unerklärlicherweise schwarz. Der Bildschirm ist immer noch eingeschaltet, und wenn ich mit den Lautstärkereglern spiele, zeigt die Lautstärkeanzeige gut an.Bildschirm wird plötzlich schwarz

Der einzige Weg, dies zu lösen, ist die Home-Taste zu drücken, und an diesem Punkt sehe ich die folgende Meldung im Log:

Springboard [15]: Fehler WaveDeck

Schnappschuss Wenn ich dann die App wieder öffne, ist es in Ordnung.

Kann jemand etwas Licht darauf werfen?

+6

Ich mag den "Schuppen etwas Licht" Witz, +1. –

+0

Aber jetzt ernsthaft, ist Ihre App OpenGL, Storyboard, etc? –

+0

Das ist neu. +1 –

Antwort

2

Update von der WaveDeck vorne:

Wir haben applicationDidEnterBackground in der App-Delegaten in einem schlechten Weg verwendet: fragen, die alle Operationen Hintergrund beginBackgroundTaskWithExpirationHandler und hält die Haupt Runloop innen applicationDidEnterBackground laufen zu beenden verwenden.

So endete die Methode applicationDidEnterBackground erst nach Abschluss aller Hintergrundoperationen, egal ob die App wieder aktiv wurde oder nicht.

Also anscheinend konnte das OS die App nicht korrekt "abfotografieren" und würde einige Zeit nach der Rückkehr aus dem Hintergrundzustand auf einen schwarzen Bildschirm setzen - wenn die Delegiertenfunktion von applicationDidEnterBackground endete.

0

Ich stoße auf ein ähnliches Problem. Setzen Sie die Operation zum Speichern langer Daten im nächsten Runloop, damit applicationDidEnterBackground sofort zurückkehrt. Der Snapshot-Mechanismus des Systems funktioniert ordnungsgemäß.

- (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]; 
} 
Verwandte Themen