开发者

Updating Android TextView regularly to show countdown

I am trying to use the CountDownTimer in Android to get a TextView to count down from 100 to zero. I would like this to happen as quickly as possible while remaining visible.

At the moment if the CountDownTimer tick interval is any less than 500ms (I think it was that, might've been a bit lower) then the updates just don't happen.

I have only tried this on the emulator.

Am I going about this in the right way? If I am, is this apparent slowness a limitation of the e开发者_开发百科mulator or just something that I will have to live with? If this is not the right way, can someone recommend a different approach?


Kindly check the following sample code both on emulator & device

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);
        }
    }
}


How are you doing the update at the moment, is it on the UI thread?

If you were counting up rather than down, you could use the Chronometer UI widget. That's not flexible enough to go backwards but perhaps you could use its source as a starting point.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜