2014-07-16 1 views
0

저는 작업중인 앱에서 배경 업데이트를 사용하도록 선택했습니다.백그라운드 모드에서 NSTimer가 작동하지만 작동하지 않아야합니까?

- (void)beginUpdateTimer 
{ 
    [self.updateTimer invalidate]; 
    self.updateTimer = [NSTimer timerWithTimeInterval:ForceUpdateDuration 
               target:self 
              selector:@selector(updateWithLastKnownLocation) 
              userInfo:nil 
               repeats:NO]; 

    NSRunLoop *runloop = [NSRunLoop currentRunLoop]; 
    [runloop addTimer:_updateTimer forMode:NSRunLoopCommonModes]; 
} 

방법 -updateWithLastKnownLocation 잠재적 beginUpdateTimer을 다시 호출 내을 locationManager 클래스에서

는,이처럼 보이는 방법을 가지고있다.

내 앱을 테스트 할 때 백그라운드 위치 업데이트를 사용하도록 설정 한 상태에서 앱이 백그라운드로 이동하면 타이머가 계속해서 실행된다는 것을 발견했습니다. 비록 이것이 일어나지 않아야합니까? 이것에 의지 할 수 있을까요?

감사합니다.

+0

은 앱이 백그라운드로 들어가면 타이머가 멈추기를 원합니다. –

+0

아니요, 타이머를 실행하고있어서 기쁩니다. 그러나 iOS에서 동작이 지원되지 않는다는 인상하에있었습니다. –

+0

그럼 지원됩니다. – matt

답변

2

예, 백그라운드로 들어갔을 때 타이머가 실행 중이었다면 사용할 수 있습니다.

+0

그게 잘됐다 - 우연히 이것이 문서화 된 곳을 아십니까? 나는 지금 그것을 찾으려고 노력하고있다. 나는 당신이 시스템이 위치 위임 콜백을 처리 할 때까지 잠에서 깨울 때까지 일시 중지 될 것이라는 인상을 받았다. –

+0

내 기억은 그들이 1 년 또는 2 년 전에 WWDC 비디오에서 이렇게 말한 것입니다. 타이머는 실제로 백그라운드로 들어갈 때 중단됩니다.)하지만 그보다 더 구체적인 것을 준설 할 수는 없습니다. 스택 오버플로에 대한 백그라운드에서 NSTimer에 대한 많은 내용이 있으므로 검색을하십시오. – matt

+0

plist 백그라운드 모드에서'location' 키를 제공 한 경우에만 앱이 일시 중지되지 않습니다. – progrmr

관련 문제