美文网首页
iOS锁屏或者后台时计时器停止计时解决方法

iOS锁屏或者后台时计时器停止计时解决方法

作者: __枫__ | 来源:发表于2017-05-05 16:17 被阅读1268次

当我们在项目中需要使用计时器计时时,往往会碰到当程序进入后台时,计时器就会暂时停止,当重新进入程序时,计时器又会重新开始,然而我们需要在程序进入后台时,计时器依然能够计时,所以,就使用到了一种解决方案,利用进入后台和前台的时间差来让计时器完美计时。

首先在AppDelegate.m中,我们需要在以下两个方法添加相应通知

//当程序进入后台的时候调用

- (void)applicationWillResignActive:(UIApplication*)application {

//程序准备进入后台通知相关VC 记录当前时间

[[NSNotificationCenterdefaultCenter]postNotificationName:@"APPWillResignActive"object:nil];

}

//当程序进入前台的时候调用

- (void)applicationDidBecomeActive:(UIApplication*)application {

//程序进入前台时,记录当前时间

[[NSNotificationCenterdefaultCenter]postNotificationName:@"APPDidBecomeActive"object:nil];

}

在相对应的VC.m中注册通知,先声明一个全局的变量,NSDate * _backgroundDate;

-(void)viewWillAppear:(BOOL)animated{

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(APPWillResignActive) name:@"APPWillResignActive" object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(APPDidBecomeActive) name:@"APPDidBecomeActive" object:nil];

}

- (void)APPWillResignActive{

_backgroundDate = [NSDate date];

}

- (void)APPDidBecomeActive{

NSTimeInterval  timeD = [[NSDate date] timeIntervalSinceDate:_backgroundDate];

//time 总时间

time = timeD + time;

}

- (void)dealloc{

[[NSNotificationCenter defaultCenter]removeObserver:self];

}

相关文章

网友评论

      本文标题:iOS锁屏或者后台时计时器停止计时解决方法

      本文链接:https://www.haomeiwen.com/subject/uekstxtx.html