Handle與線程

Handle機制

andriod提供了Handler 和 Looper 來滿足線程間的通信。Handler先進先出原則。Looper類用來管理特定線程內對象之間的消息交換(MessageExchange)。

1)Looper: 一個線程可以產生一個Looper對象,由它來管理此線程裏的MessageQueue(消息隊列)。 
2)Handler: 你可以構造Handler對象來與Looper溝通,以便push新消息到MessageQueue裏;或者接收Looper從Message Queue取出)所送來的消息。
3) Message Queue(消息隊列):用來存放線程放入的消息。 

4)線程:UIthread 通常就是main thread,而Android啓動程序時會替它建立一個MessageQueue。 


5) new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//這並不是開啓了一個新的線程,這只是讓
   下面運行的程序,在1s鍾後運行                                             

}
}, 1000);


6)//創建一個新線程 發送消息

   new Thread() {          
@Override
public void run() {
try {
sleep(1000); // 休眠1s
Message msg = mHandler.obtainMessage(0);
mHandler.sendMessage(msg); //向handle發送了一個Message  內容爲0
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();  //只有當線程中出現start時,代表了開啓了一個新的線程 

//接收handle發送過來的消息

private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
//在下面寫更新Ui的東西


break;
}
}
};

7)下載 等耗時的操作要放到 子線程中去,否則易造成網絡堵塞

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