歡迎使用CSDN-markdown編輯器

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所示。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章