接觸android的應用開發已經有一個多月了,對於控制項的使用,比較容易掌握,通過xml配置布局,在主程式中建立對應的控制項,設定監聽,完成使用者動作,我說的也只是入門級的水平,本人也是入門級菜鳥,哈哈!對我而言,初學的難度在於handler的使用上,所以在這裡詳細介紹一下!
Handler從字面上看就是一個控制代碼,用於負責發送和處理相應訊息,它包括兩種隊列:線程隊列和訊息佇列,分別通過post和sendmessage來實現。
使用Handler的流程:
1、建立Handler對象,可以直接使使用Handler無參建構函式,建立對象,也可以繼承handler類,重寫HandlerMessage函數,然後建立Handler對象。
Handler handler = new Handler(){
public void handleMessage(Message msg) {
//執行方法
}
};
2、建立Runable對象,複寫run方法,run方法中是將要執行的操作。
Runnable mThread = new Runnable() {
int i = 0;
@Override
public void run() {
// TODO Auto-generated method stub
//執行方法
}
};
3、在監聽入口中,調用Handler的post或者postDelayed方法,將要執行的線程對象(Runable對象)加入到線程隊列中。也可以用sendMessage發送訊息,處理訊息的地方就是複寫的HandlerMessage裡。可以通過obtainMessage,擷取訊息,傳遞參數。
handler.post(mThread);
或者
Message msg = handler.obtainMessage();
msg.arg1 = i;
handler.sendMessage(msg);
想要線程停止,可以調用Handler對象的removecallbacks(Runable r)從線程隊列中移除線程對象。
注意:線程對象和訊息對象分別對應線程隊列和訊息佇列,處理也是分成了post和SendMessage兩種,要加以區分。
Handler分發Message對象和Runable對象到主線程,每個handler執行個體都會綁定到建立他的線程中。
ps:我也看書和自己練習總結的,可能有說的不清楚的地方!