我有一个倒计时器,当你启动它时,它会创建一个通知并将其设置为在倒数计时器设置的时间内触发。我还启动了1秒计时器,以便在标签停机时更新标签。收到本地通知后,如果应用程序处于打开状态,我会点击didReceiveLocalNotification:(UILocalNotification *)通知功能,如果我没有在应用程序中弹出本地通知。如果我留在应用程序或只是关闭它,一切正常,就是这样。当我尝试使用多个应用程序进行多任务时会出现问题。
我注意到以下情况,我不知道如何解决它:
知道如何解决这个问题吗?
感谢。
答案 0 :(得分:2)
取这个对象。
NSTimer *gameTimer;
NSDate *pauseStart, *previousFireDate;
然后,在你的.m文件中暂停并保存计时器值而不是使用此代码
pauseStart = [NSDate dateWithTimeIntervalSinceNow:0] ;
previousFireDate = [gameTimer fireDate] ;
[gameTimer setFireDate:[NSDate distantFuture]];
然后,当您想要恢复计时器时,请使用此代码
float pauseTime = -1*[pauseStart timeIntervalSinceNow];
[gameTimer setFireDate:[NSDate dateWithTimeInterval:pauseTime sinceDate:previousFireDate]];
然后,如果要存储背景和前景的转换,请使用NSUserDefaults
存储计时器计数并使用它来暂停和恢复。您可以使用appdelegate
操作来处理applicationDidEnterBackground
和applicationWillEnterForeground
中的此事件。
如果您在进入前台时处于同一视图中,则可以通过此代码在viewdidload
方法中获取相关信息。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(someAction) name:UIApplicationWillEnterForegroundNotification object:nil];
您可以使用someAction
方法处理计时器。