Nun*_*ves 3 android chronometer
我有一个应用程序,我正在向用户显示他正在做的事情的计时器.每当活动进入后台(通过主页按钮或返回)时,我保存该时间(以秒为单位),当活动恢复时,我想继续从同一时间运行计时器.用户可能会从列表中选择一个不同的项目,时间也不同,他也可能会关闭手机...我可以节省计时器的时间,但我不能用开始时间设置它.
从Chornometer API,该方法setBase()指出:
设置计数定时器参考的时间.
根据我的理解,这意味着如果我将此值设置为currentTime,它将从0开始计数.现在,如果我希望它以17s开始,我想将基数设置为currentTime减去17秒前的时间.所以类似于:
setBase(system.currentTimeMillis() - (17 * 1000)).
Run Code Online (Sandbox Code Playgroud)
但是这不起作用,它始终以0开始!
我在这里阅读了一些其他的主题,但没有一个答案有帮助.它始终以0开头!
提前致谢.
我想你将不得不自己跟踪一些时间标记.
Chronometer myChrono;
long baseTime;
long stopTime;
long elapsedTime;
Run Code Online (Sandbox Code Playgroud)
设置基准时间时,您要使用:
baseTime = SystemClock.elapsedRealtime() - stopTime;
myChrono.setBase(baseTime);
Run Code Online (Sandbox Code Playgroud)
如果您想查看已经过了多少时间,请使用:
elapsedTime = SystemClock.elapsedRealtime() - myChrono.getBase();
Run Code Online (Sandbox Code Playgroud)
看一下SystemClock doc.
小智 6
setBase(system.currentTimeMillis() - (17 * 1000))
Run Code Online (Sandbox Code Playgroud)
应该改为
setBase(SystemClock.elapsedRealtime() - (17 * 1000))
Run Code Online (Sandbox Code Playgroud)
一般来说:
mChronometer.setBase(SystemClock.elapsedRealtime() - (nr_of_min*60000 + nr_of_sec*1000)))
希望这会节省很多人的时间:)
| 归档时间: |
|
| 查看次数: |
9921 次 |
| 最近记录: |