定期更新Android TextView以显示倒计时

5
我正在尝试在Android中使用CountDownTimer,使TextView从100倒数到零。我希望尽可能快地完成,同时保持可见。
目前,如果CountDownTimer的tick间隔小于500ms(可能会更低一些),更新就不会发生。
我只在模拟器上尝试过这个方法。
我这样做的方式正确吗?如果是,这种明显的缓慢是模拟器的限制还是我必须接受的事情?如果这不是正确的方法,有人可以推荐一个不同的方法吗?
2个回答

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

你现在正在进行更新操作,是在UI线程上吗?

如果你是在计数而不是倒计时,你可以使用Chronometer UI小部件。虽然它不能向后弹性地运行,但也许你可以将其源代码作为起点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接