2014-01-08 2 views
1

어제까지 앱이 백그라운드로 들어가면 NSTimer가 중지 될 것입니다. 나는 이상하게 여겨지는 느낌이 든다.앱이 백그라운드로 들어간 후에 NSTimer가 멈추지 않는다.

내 앱이 위치를 업데이트하고 오디오 배경 모드를 재생합니다. 업데이트 위치가 몇 초마다 새로 고쳐집니다. 그러나 앱 화면 중 하나에서만 발생합니다. 또한 NSTimer는 일부 UI를 새로 고칩니다.

나는 이런 식으로 일정을했습니다

[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateTime) userInfo:nil repeats:YES]; 

내용이 지금 관련이 방법은,도있다 :

-(void)updateTime 
{ 
//irrelevant content, but the method gets fired even when the app is in background 
} 

이상한 것은, 만 인 방법, thah NSTimer에 의해 해고되고 다른 곳에서는 ap가 백그라운드로 들어가도 해고됩니다. 여기서 무슨 일이 일어나고있는거야? 그게 정상적인 행동인가요?

+0

타이머가 선언되는 곳은 ?? – iPatel

+0

viewWillAppviewController의 –

답변

3

위치 및 오디오와 함께 배경 모드를 사용하기 때문에 앱이 백그라운드에서 계속 작동하므로 타이머가 실행 중입니다.

사용중인 위치 및 오디오가있는 백그라운드 모드를 제거한 다음 타이머를 작동 시키면 효과가 없습니다.

정상적인 동작입니다. 틀 렸으면 고쳐줘.

+0

그래서 ... NStimer를 사용할 수 있습니까? 그 때문에 사과 때문에 거절 당하지 않겠습니까? 그것은 저에게 매우 편리 할 것입니다, 왜냐하면 그것은 제가 필요로하는 것이기 때문입니다. 나는 그저 불가능하다고 말하는 수많은 톤을 읽었을 뿐이었다 ... –

+0

예, 애플은 이것을 거부하지 않을 것이다. 나는이 시나리오로 애플 리케이션을 만들었고 appstore에 살고있다. –

+0

놀랍습니다. 고마워요! –

1

타이머를 공개로 만들려면 .h 파일에 추가하고 앱에 액세스하십시오. backGround 모드에서 입력

- (void)applicationDidEnterBackground:(UIApplication *)application 

위의 방법을 사용하여 타이머를 inValidate ..로 수정합니다.

그리고 당신은 당신의 타이머를 다시 할 시작하려는 경우 당신은

- (void)applicationWillEnterForeground:(UIApplication *)application 

이 방법으로 액세스 할 수 있습니다. 여기에 타이머를 다시 만들어야합니다.

1

타이머를 무효화하여 타이머를 중지 할 수 있습니다.

[self.timer invalidate]; self.timer = nil;

관련 문제