在發現這個類之前,一直是用的handler,子線程發消息,UI線程進行倒計時的顯示工作。前幾天在做一個倒計時顯示的時候發現了這個類,用起來非常方便
翻看了下源代碼。內部已經幫我們實現了handler的子線程操作

CountDownTimer這個類用起來非常easy。兩個參數。幾句代碼搞定,例如以下:
CountDownTimer(long millisInFuture, long countDownInterval)
知道這兩個參數的意思那就非常好辦了,new一個CountDownTimer對象就會生成兩個回調函數
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
}
@Override
public void onFinish() {
// TODO Auto-generated method stub
}
第一個方法 就是在倒計時的時候調用的,每倒計時一次要進行什么操作。就能夠放在這里面做。通常是對UI線程進行一些操作。比方對文本進行更改,達到倒計時的效果
第二個方法是倒計時完畢后調用。倒計時完畢須要進行什么操作都能夠寫在里面。
當然,最后一定要記得start() 否則線程不會開始
所有代碼:
public class MainActivity extends Activity {
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
/** 倒計時60秒,一次1秒 */
CountDownTimer timer = new CountDownTimer(60*1000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
tv.setText("還剩"+millisUntilFinished/1000+"秒");
}
@Override
public void onFinish() {
tv.setText("倒計時完畢了");
}
}.start();
}
}
效果圖:

