postDelayed方法和removeCallback方法的使用
方法postDelayed的作用是延遲多少毫秒後開始運行,而removeCallbacks方法是刪除指定的Runnable對象,使線程對象停止運行.
方法聲明如下:
public final boolean postDelayed (Runnable r, long delayMillis)
其中參數Runnable r 在Handler對象所運行的線程中執行.
創建名稱爲handler2的Android項目,Main.java的核心代碼如下:
public class Main extends Activity {
private Button button1;
private Button button2;
private Handler handler = new Handler();
private int count = 0;
private Runnable runnableRef = new Runnable() {
public void run() {
Log.v("2", Thread.currentThread().getName());
count++;
Log.v("!", "count=" + count);
handler.postDelayed(runnableRef, 1000);
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.v("1", Thread.currentThread().getName());
button1 = (Button) this.findViewById(R.id.button1);
button2 = (Button) this.findViewById(R.id.button2);
button1.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
Thread thread = new Thread(runnableRef);
thread.start();
Log.v("!!!!!!!!!!!!!", "end");
}
});
button2.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
handler.removeCallbacks(runnableRef);
}
});
}
}
程序運行後單擊button1按鈕開始循環,count累加1,運行結果如圖6.41所示。