標籤:src rem tle tno 不同 style back 技術 資源
一、 Handler
1、使用
<1>在主線程中定義一個 Handler, 重寫 handleMessage 方法
//在主線程中定義一個Handler
private Handler handler=new Handler(){
//這個方法是在主線程中執行的
@Override
public void handleMessage(Message msg) {
tv_result.setText(msg.obj.toString());
}
};
<2> 在子線程中使用主線程中建立的handler 發送訊息
Message msg=new Message();
msg.obj=content;
handler.sendMessage(msg);//發訊息
2、handler 原理
子線程是不能直接操作UI線程的,需要通過 handler,首先發送到(messagequeue)訊息佇列當中,然後Looper 會不斷的迴圈
得到這條訊息,再通過 handleMessage 方法執行得到訊息
handler 的作用是用來發訊息和處理訊息的
Looper 的作用是去訊息佇列 (messagequeue) 中取訊息
Looper 是在主線程一建立就有了
3、Message what 屬性的使用
<1> 設定 what 的 值
Message msg=new Message();
msg.what=REQUESTEXCEPTION;
handler.sendMessage(msg);
<2>在 handleMessage 方法中進行判斷,執行不同操作
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case REQUESTSUCCESS: //請求成功
tv_result.setText(msg.obj.toString());
break;
case REQUESTNOTFIND: //目標資源不存在
Toast.makeText(MainActivity.this, "目標資源不存在", Toast.LENGTH_SHORT).show();
break;
case REQUESTEXCEPTION: //異常
Toast.makeText(MainActivity.this, "伺服器忙 請稍等。。。", Toast.LENGTH_SHORT).show();
}
}
關於 Message: 可以通過 ,這樣的方式來建立,減少對象的建立。
null
Android 訊息機制