2012-03-28 4 views
4

내 응용 프로그램을 사용하는 동안 화면이 가끔씩 갑자기 설명 할 수없이 검은 색으로 변합니다. 화면에 여전히 전원이 공급되고 볼륨 조절기로 재생하면 볼륨 표시기가 잘 나타납니다.화면이 갑자기 검은 색이됩니다.

이 문제를 해결하는 유일한 방법은 홈 버튼을 누릅니다되는 시점에서 내가보고 내 로그에 다음과 같은 메시지가

스프링 보드 [15] :

WaveDeck 스냅 샷 실패 그런 다음 앱을 다시 열면 괜찮습니다.

누구든지이 문제에 대해 의견을 개진 할 수 있습니까? WaveDeck 전면에서

+6

나는 '빛을 비추는'농담, +1을 좋아한다. –

+0

하지만 진지하게, 당신의 앱 OpenGL, 스토리 보드 등입니까? –

+0

그건 새로운 것입니다. +1 –

답변

2

업데이트는 :

우리는 나쁜 방법으로 응용 프로그램의 위임에 applicationDidEnterBackground을 사용했습니다 : 모든 배경 작업을 요구하는 beginBackgroundTaskWithExpirationHandler을 사용하고 applicationDidEnterBackground 내에서 실행되는 주요 runloop을 유지 마무리 할 수 ​​있습니다.

그런 식으로 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]; 
} 
관련 문제