android Chronometer 计时器 setBase(long base) 设定从自己想要的时间开始

时间:2020-12-27 20:35:47

记录下今天写计时器尝试到快要奔溃才出来的结果。

大家应该都知道setBase(long base)中的参数是毫秒数,SystemClock.elapsedRealtime()是系统启动到现在的毫秒数。

通过查看setBase的源代码,可以发现,

public void setBase(long base) {
mBase = base;
dispatchChronometerTick();
updateText(SystemClock.elapsedRealtime()); //  查看此方法 <span style="font-family: Arial, Helvetica, sans-serif;">long seconds = now - mBase; 减去了系统启动到现在的毫秒数
}</span>
<pre name="code" class="java">private void init() {        mBase = SystemClock.elapsedRealtime();        updateText(mBase);    }<span style="font-family: Arial, Helvetica, sans-serif;">  </span>
 

那么,

private Chronometer timer;
timer.setBase(SystemClock.elapsedRealtime()-second*1000); //second为我想要显示的秒数,所以此处要乘以1000

这个地方,照上面的代码,应该是加才对,但是在很多次尝试后发现,是应该用,系统启动到当前的时间 减去 你真正想要显示的时间

暂时还没有想通是为什么,后期如果想到了,再来补充