2012-04-24 6 views
1

내 응용 프로그램은 GPS를 지원하며 전경과 배경에서 모두 실행됩니다. 장치가 잠겨 있지 않으면 완벽하게 작동하는 타이머를 시작했습니다. 장치가 잠긴 경우에도 타이머가 계속 실행되기를 원합니다.장치가 잠겨있을 때 NSTimer가 만료됩니다.

아무에게도 이것이 어떻게 수행 될 수 있는지 말할 수 있습니까? 당신은 타이머를 시작하는 방법과 상관없이

답변

3

는 기본 실행 모드는 다음과 같다 :

 Timer *timer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(run) userInfo:nil repeats:YES]; 

    [[ NSRunLoop currentRunLoop ] addTimer:timer forMode:NSDefaultRunLoopMode ]; 

NSDefaultRunLoopMode를 사용하여. 더 많은 유연성을 원한다면 대신 forMode를 NSRunLoopCommonModes으로 바꾸면됩니다.

+0

NSRunLoop을 사용하면 타이머가 iPhone의 상태와 관계없이 실행됩니다. 내가 맞습니까? – Perseus

+1

NSRunLoop은 항상 사용되며 주 응용 프로그램 스레드의 백본입니다. NSTimers가 예약됩니다. 실행 모드로 예약되어 중단 될 수 있는지 여부가 결정됩니다. 기본값은별로 좋지 않습니다. 스크롤 뷰와 같은 항목에 의해 중단됩니다. 테스트를한지 오래되었지만 일반적인 모드는 거의 중단되지 않습니다. 나는 그것이 당신이 필요로하는 것에 대해 효과가있을 것이라고 확신합니다. 애플은이 모드를 방해하는 것에 대한 아주 좋은 설명을 제공하지 않습니다. –

+0

설명 주셔서 감사합니다 :) 타이머가 장치가 꺼져있을 때를 제외하고는 내 응용 프로그램에서 계속 실행되기를 바랍니다. – Perseus

관련 문제