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

时间:2011-02-02 11:32:01

标签: android android-widget

我正在尝试使用Android中的CountDownTimer来让TextView从100倒数到零。我希望在保持可见的同时尽快发生这种情况。

目前,如果CountDownTimer滴答间隔小于500毫秒(我认为那可能会低一点),那么更新就不会发生。

我只是在模拟器上试过这个。

我是否以正确的方式解决这个问题?如果我是,这种明显的缓慢是模拟器的限制还是我必须忍受的东西?如果这不是正确的方法,有人可以推荐一种不同的方法吗?

2 个答案:

答案 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作为起点。