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

本文探讨了计时器中setBase方法的工作原理,并详细解释了如何使用SystemClock.elapsedRealtime()来设置计时器的基础时间。通过实例演示了如何调整计时器的起始时间以实现特定秒数的显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

大家应该都知道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

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

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



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值