[ 基本使用狀況 ]
- 畫面更新只能在主執行緒中,因此如果在其它執行緒中有需要更新畫面,那就需要回到主執行緒。
- 從其它執行緒回到主執行緒,需使用 Handler。
- 主執行緒(UI執行緒)不允許執行需要長時間的動作,否則會產生 ANR(Application is Not Responding),因此就要使用其它執行緒,但結果需要更新畫面,因此就要用 Handler。
[ 使用方法 ]
- post : 傳一個 runnable 進去,因為是 runnable 所以不能帶參數
- sendMessage : 在其它執行緒中使用 Handler 的 sendMessage() 方法,會執行 Handler 的 handleMessage() 方法
- sendMessage() 送出 Message 物件,handleMessage() 方法可以處理 Message 物件
[ post sample ]
private Handler mHandler = new Handler()
mHandler.post(new Runnable(){
@Override
public void run() {
// work
}
});
[ sendMessage sample ]
private Handler mHandler = new Handler(){
public void handleMessage(Message msg){
switch(msg.what){
case 0:
// work
break;
}
}
};
// 下面為其它執行緒,當然你要 start() 它
private Thread mThread = new Thread(new Runnable() {
public void run() {
Message msg = new Message();
msg.what = 0;
handler.sendMessage(msg);
}
});
[ Reference ]
請先 登入 以發表留言。