我刚刚在我的应用程序中添加了一个计时器,它有一种奇怪的行为。而不是数字计数它在CHARS中做它! 例如:
00:00:00
00:00:0(
00:00:0)
00:00:0/
00:00:0*
00:00:0+
... LOOPS AFTER 10
00:00:00
00:00:0(
00:00:0)
00:00:0/
00:00:0*
00:00:0+
XML
<Chronometer
android:id="@+id/tracking_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@id/record_indicator"
android:textColor="@color/tracking_time"
android:textSize="14dip"
android:textStyle="bold" />
的onCreate
mTrackingTime = (Chronometer)this.findViewById(R.id.tracking_time);
mTrackingTime.setOnChronometerTickListener(this);
启动
mTrackingTime.setBase(System.currentTimeMillis());
mTrackingTime.start();
回调
@Override
public void onChronometerTick(final Chronometer chronometer) {
}
答案 0 :(得分:2)
当基数大于SystemClock.elapsedRealtime()
时,会出现这些字符,这是自启动以来的毫秒数。
显示此参数的结果:
SystemClock.elapsedRealtime() - base
默认值,或者如果您致电:
chronometer.setBase(SystemClock.elapsedRealtime());
然后计时器将从00:00
如果你打电话:
chronometer.setBase(SystemClock.elapsedRealtime() - 10000);
然后计时器将从00:10
如果你打电话:
chronometer.setBase(SystemClock.elapsedRealtime() + 10000);
然后计时器将吸取垃圾10秒,然后从00:00
开始
所以如果你打电话:
chronometer.setBase(System.currentTimeMillis());
你应该期待看到大约44年的垃圾,而且还可以。但
答案 1 :(得分:1)
根据我的理解,Chronometer.setBase()
需要基于elapsedRealTime的毫秒。这意味着纪元毫秒不起作用。为了能够使用纪元毫秒,您必须像下面这样调用Chronometer.setBase()
:
chronometer.setBase(SystemClock.elapsedRealtime());
数学有效地将纪元毫秒转换为经过的实时毫秒。
试试这个,看看是否能解决您的问题......
根据@Ef Es评论更新..