chronometer计时器再次进入程序是加载的时间为什么是减去之前记录的时间而不是加

Chronometer控件在使用时,一般都会SystemClock.elapsedRealtime() 这个函数一起使用,这个函数是返回手机从开机到现在经过了多长时间,类型为long。
chronometer.setBase(SystemClock.elapsedRealtime();
  就是将当前开机时间的瞬时值作为定时器起始时间 ,而计时的原理就是用开机经过的时间减去定时器的时间,这两者的差就是计时的时长。
那如果程序退到后台是,我希望停止计时,当再次进入程序时继续计时,如记录用户在线时间,此时应该怎么办呢?
  调用start(); 函数定时器开始计时,调用stop(); 函数当然就应该是停止啦(字面理解),但是stop() 的停止是停止视图计时(变动),但是后台其实还是在计时,毕竟依赖的是系统开机时间来计时的,stop() 方法是不可能把开机时间停止下来的,那么应该怎么办呢?
  换个角度想一想,我只要在程序退到后台是把记时的时间保存下来,当程序再切回来的时候加在定时器上不就好了吗?
  但是这就引出了一个问题,这个保存下来的时间到底怎么加上去。
  Chronometer的起始时间都设置为程序打开时的瞬时系统启动的时间,那么只要把Chronometer的起始时间在设置的时候比系统启动时间少X 秒,X 是程序退到后台时已经记录的时长,这时候系统启动时间 - Chronometer起始时间 = X,就是从X秒开始计时了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值