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

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

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

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

public void setBase(long base) {
        mBase = base;
        dispatchChronometerTick();
        updateText(SystemClock.elapsedRealtime()); //  查看此方法 long seconds = now - mBase; 减去了系统启动到现在的毫秒数
}
private void init() {
        mBase = SystemClock.elapsedRealtime();
        updateText(mBase);
    }  
 
  

那么,

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

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

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



你可能感兴趣的:(android Chronometer 计时器 setBase(long base) 设定从自己想要的时间开始)