CountDownTimer这个类实现了倒计时功能。将后台线程的创建和Handler队列封装成一个方便的类调用。这个类比较简单,只有四个方法:onTick、onFinsh、cancel和start。前两个是抽象方法,所以需要重写。下面是官方给的一个小例子:newCountdownTimer(30000,1000){publicvoidonTick(longmillisUntilFinished){mTextField.setText("secondsremaining:"+millisUntilFinished/1000);}publicvoidonFinish(){mTextField.setText("done!");}}.start();ackagecom.yydcdut.daojishi;importandroid.os.Bundle;importandroid.os.CountDownTimer;importandroid.app.Activity;importandroid.view.Menu;importandroid.widget.TextView;importandroid.widget.Toast;publicclassMainActivityextendsActivity{privateMyCountmc;privateTextViewtv;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv=(TextView)findViewById(R.id.show);mc=newMyCount(30000,1000);mc.start();}@OverridepublicbooleanonCreateOptionsMenu(Menumenu){//Inflatethemenu;thisaddsitemstotheactionbarifitispresent.getMenuInflater().inflate(R.menu.main,menu);returntrue;}/*确定一个倒计时的内部类*/classMyCountextendsCountDownTimer{publicMyCount(longmillisInFuture,longcountDownInterval){super(millisInFuture,countDownInterval);}@OverridepublicvoidonFinish(){tv.setText("finish");}@OverridepublicvoidonTick(longmillisUntilFinished){tv.setText("请等待30秒("+millisUntilFinished/1000+")...");Toast.makeText(MainActivity.this,millisUntilFinished/1000+"",Toast.LENGTH_LONG).show();//toast有显示延时}}}主要重写了onTick和onFinsh方法,onFinish()中的代码是计时器结束时要执行的操作;onTick(Longm)中的代码是你的倒计时开始时做什么,参数m是到完成的时间,构造方法MyCount()中的两个参数,前者是倒计时次数,后者是每秒倒计时之间的间隔,均以毫秒为单位。比如你要倒计时30秒,每一秒之间的间隔是1秒,两个参数可以写成MyCount(30000,1000)。后台线程的创建和Handler队列封装成一个方便的类调用。当你想取消时,只需使用mc.cancel()方法。
