如何以特定的开始时间启动计时器?

How do I start chronometer with a specific starting time?

假设我有这个变量:

long myMillis = 20000;

这意味着我希望我的 Chronometer 正好在 20 秒 (00:20) 开始。

我试过这样做:

chronometer.setBase(myMillis);

但是没用。它不是从 20 秒开始的。它从一些没有意义的奇怪时间开始。

In general the chronometer works like this (if you would like to set the Base to a specific nr):

mChronometer.setBase(SystemClock.elapsedRealtime() - (nr_of_min * 60000 + nr_of_sec * 1000)))

所以做到:

 mChronometer.setBase(SystemClock.elapsedRealtime() - (2* 60000 + 0 * 1000)))

来晚了,但可能会对其他人有所帮助。 我在第一个片段中使用了以下代码

chronometerTimer.setBase(SystemClock.elapsedRealtime());
chronometerTimer.start();

然后在某些情况下移动到下一个片段,其中 chornometer 应该在上一个 chronometer 结束的同时开始,我使用这个代码得到经过的时间。

long elapsedMillis = SystemClock.elapsedRealtime() - chronometerTimer.getBase();

我在下一个片段中发送 elapsedMilis 并使用以下代码

chronometerTimer.setBase(SystemClock.elapsedRealtime() - elapsedTime);
chronometerTimer.start();

效果很好。

对于 Kotlin,

要以 20 秒的开始时间开始 Chronometer,您可以使用

val timeInMilSeconds = 20000
chronometer.base = SystemClock.elapsedRealtime() - timeInMilSeconds
chronometer.start()

这将以 20 秒的开始时间启动 Chronometer,即 00:00:20