我正在尝试使用Android中的CountDownTimer
来让TextView
从100倒数到零。我希望在保持可见的同时尽快发生这种情况。
目前,如果CountDownTimer滴答间隔小于500毫秒(我认为那可能会低一点),那么更新就不会发生。
我只是在模拟器上试过这个。
我是否以正确的方式解决这个问题?如果我是,这种明显的缓慢是模拟器的限制还是我必须忍受的东西?如果这不是正确的方法,有人可以推荐一种不同的方法吗?
答案 0 :(得分:11)
请在模拟器和模拟器上检查以下示例代码。设备
package com.sample;
import android.app.Activity;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.widget.TextView;
public class SampleTimer extends Activity {
TextView tv; // textview to display the countdown
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tv = new TextView(this);
this.setContentView(tv);
// 10000 is the starting number (in milliseconds)
// 1000 is the number to count down each time (in milliseconds)
MyCount counter = new MyCount(10000, 1000);
counter.start();
}
// countdowntimer is an abstract class, so extend it and fill in methods
public class MyCount extends CountDownTimer {
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
tv.setText("done!");
}
@Override
public void onTick(long millisUntilFinished) {
tv.setText("Left: " + millisUntilFinished / 1000);
}
}
}
答案 1 :(得分:1)
目前你是如何进行更新的,是否在UI线程上?
如果您正在计算而不是关闭,则可以使用Chronometer UI小部件。这不够灵活,不能倒退,但也许你可以用its source作为起点。