アプリがバックグラウンドに入ったときにタイマーを無効にするコードがありますが、ホームボタンを押して待ってからアプリを開くと、タイマーは停止せずにずっと続きました。
私のタイマーコード:
-(void) updateTimer {
NSDate *currentDate = [NSDate date];
NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:startDate];
second = (NSUInteger)round(timeInterval);
NSString *string = [NSString stringWithFormat:@"%02u:%02u:%02u",
second / 3600, (second / 60) % 60, second % 60];
hhmmssLabel.text = string;
pauseTimeInterval = timeInterval;
}
-(void)pauseTimer {
[tickerTimer invalidate];
tickerTimer = nil;
}
-(void) unPauseTimer {
startDate = [NSDate date] ;
startDate = [startDate dateByAddingTimeInterval:((-1)*(pauseTimeInterval))];
tickerTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/1.0 target:self selector:@selector(updateTimer) userInfo:nil repeats:YES];
}
アプリケーションがフォアグラウンドを離れたかどうかを確認するための私のコード
- (void)applicationWillResignActive:(UIApplication *)application
{
if([tickerTimer isValid] && scoringBegan == YES){
[self pauseTimer];
scoringBegan = NO;
[phonePos invalidate];
[baseReset invalidate];
}
}
- (void)applicationDidEnterBackground:(UIApplication *)application
{
if([tickerTimer isValid] && scoringBegan == YES){
[self pauseTimer];
scoringBegan = NO;
[phonePos invalidate];
[baseReset invalidate];
}
}
- (void)applicationWillTerminate:(UIApplication *)application
{
if([tickerTimer isValid] && scoringBegan == YES){
[self pauseTimer];
scoringBegan = NO;
[phonePos invalidate];
[baseReset invalidate];
}
}
****更新* ** * * ユーザーが特定の速度に達するとタイマーが再開します。間違っている場合は訂正してください。ただし、位置情報サービスはバックグラウンドで動作します。そのため、タイマーは一時停止後に自動的に再開します。位置情報サービスを一時停止する方法はありますか?