2009-07-28 1 views
1

여러 iPhone 응용 프로그램, 특히 그래픽 버튼이 많은 게임의 경우 홈 버튼을 눌렀을 때 종료하는 데 꽤 오래 걸리는 것으로 나타났습니다.applicationWillTerminate를 사용하여 종료 시간을 가능한 한 길게 유지

내 질문에 날씨가 인위적으로 재현 될 수 있습니다. 그 이유는 일부 가속도계 데이터를 읽을 때 시끄러운 소리를 내기 시작하는 일종의 "전화 보호 장치"를 구현하려고합니다. 아이디어는 AVAudioPlayer가 가능한 한 오랫동안 사운드를 재생하도록하는 것입니다 (즉, iPhoneOS가 프로세스를 죽이기로 결정할 때까지).

난 그냥이 어떻게 반응하는지보고, 내 응용 프로그램 위임이 같은 시도 : 어떤하지만 발생

-(void)applicationWillTerminate:(UIApplication *)application{ 
    NSInteger i; 
    while(true) { 
     i++; 
    } 
} 

, 홈 화면이 즉시 나타나고 사운드가 재생을 중지한다는 것입니다합니다 (AVAudioPlayer 인스턴스이다 뷰 컨트롤러에서), 애플리케이션 프로세스는 여전히 메모리에 남아 있으며, 실제로는 이전 애플리케이션이 수동으로 종료 될 때까지 앱의 새로운 인스턴스를 시작하지 못하게합니다 (이 모든 것이 시뮬레이터에 있음).

아이디어가 있으십니까?

+1

사용자가 홈 버튼을 누르면 종료하려고 시도하고 기다리는 것이 분명히 불편할 것입니까? 나는 게임이 기능으로 그만두는 데 오랜 시간이 걸리는 것을 보지 못했다 ... –

답변

1
  1. 실제 장치에서 이것을 테스트해야합니다.

  2. 나는 당신이 6 초 후에 퇴각한다는 느낌을 가지고 있으며, 그 후에 당신은 죽을 것이다.

그런데 AVAudioPlayer은 좋은 시민이 될 수도 있고 나가는 중일 수도 있습니다. 그것은 두포의 약간 이상하고 심지어 성가신 물건을한다. 이 경우 원격 오디오 장치처럼 낮은 수준이 필요합니다. 사실, 당신이 applicationWillTerminate에서 이것을 멈추지 않는다면 홈 화면에서 잠깐 동안 소리를 낼 것입니다.

0

실제로 AVAudioPlayer는 좋은 시민처럼 행동하지 않지만 소리를 반복 재생할 때 콜백을 사용했지만 applicationWillTerminate가 호출 된 후 작동하지 않는 이유가 있습니다. numberOfLoops = -1을 사용하고 응용 프로그램 대리인에게 루프 (i ++; 작동하지 않음, NSLog (@ "qwerty"))를 추가했습니다.

재미있게도 실제로 소리는 영원히 계속 재생됩니다. 공식 SDK를 사용하고 있지만 jailbroken 전화가 있습니다.

+0

이상한. 어떤 OS인가? 감옥이 아닌 전화가없는 경우는 어떨까요? –

0

불행히도 내 직장 컴퓨터에있는 쿠키 기반 사용자를 OpenID와 연결할 수 없어 제대로 응답하지 못했습니다.

어쨌든 3.0을 사용하고 있으며 시뮬레이터와 장치에서 똑같은 문제가 발생합니다. 나는 애플이 영원히 받아 들여야하고 이후에 라이센스를 승인하기 위해 몇 가지 애플 리케이션을 코딩하고 출시 할 준비가되어 있기 때문에 지금은 감옥이 아닌 전화로 테스트 할 수 없다 ...

나는 ' 알아 내면 곧 알려 드리겠습니다.

관련 문제