앱이 백그라운드에서 일시 중지 될 때 타이머가 있습니다.앱이 백그라운드에서 실행될 때 NSDate를 설정하고 상태 복원을 사용하여 앱을 저장하고 복원합니다.
- (void)applicationDidEnterBackground:(UIApplication *)application
{
self.exitDate = [[NSDate alloc] init];
}
및 reentryDate
를라는 NSDate
을 다음과 같이 다음과 같이 앱이 포 그라운드에 돌아 오면
여전히 적절한 시간을 가지고, 나는 AppDelegate
에 exitDate
를라는 NSDate
을 설정
- (void)applicationWillEnterForeground:(UIApplication *)application
{
self.reentryDate = [[NSDate alloc] init];
}
그럼 모두 NSDate
의 차이점을 얻고 타이머에 추가하십시오.
이 앱은 백그라운드에서 종료되지 않는 한 모두 정상적으로 작동합니다.
앱이 종료되면 앱이 부터 시작하여viewController
으로 시작되고 타이머가 중지되었습니다.
이 문제를 해결하기 위해 상태 복원을 사용합니다. 어느 쪽도 잘 작동합니다.
앱이 종료 되더라도 앱은 내가 미리 저장 한 모든 내용을 가지고 에서 마지막으로viewController
에서 다시 시작됩니다.
명시 적으로 그렇게 요청했지만 상태 복원에서 저장되지 않는 유일한 점은 내 exitDate
입니다.
앱이 돌아 오면 exitDate
은 항상 nil입니다.
-(void)encodeRestorableStateWithCoder:(NSCoder *)coder
{
[coder encodeObject:self.exitDate forKey:@"UnsavedExitDateAppDelegate"];
}
-(void)decodeRestorableStateWithCoder:(NSCoder *)coder
{
self.exitDate = [coder decodeObjectForKey:@"UnsavedExitDateAppDelegate"];
}
문제는 내가 -applicationWillTerminate
, -applicationDidEnterBackground
및 -applicationWillResignActive
에 exitDate
을 설정하려고했습니다된다
나는 그것이라고 다음과 같은 방법 후 아마 인 exitDate
설정 도착 시간을 함께 할 수있는 뭔가가 가정 앱이 다시 시작될 때마다 exitDate
은 0입니다.
아이디어가 있으십니까?
건배, 그 트릭을하는 것 ... – Chris
또한 나는 초기 방법이 잘 작동하는 바보입니다. 방금 내 decodeObjectForKey에 오타가있었습니다. 고마워요! – Chris