之前一直在當柯南,試圖查明Message和Looper、Handler的這段三角關係,什麼時候要用Message,什麼時候還要再多加Looper,Handler又是要幹嘛的?後來看了高煥堂先生第3本著作:物件導向技術與執行緒模式(第三版),才終於知道Looper和Message是連體嬰的關係,
只有不斷的Looper,副執行緒才能不斷的丟出Message,
若沒有Looper,就只會丟僅一次的Message。
而且,Looper的相關功能通常都放在Thread的run()方法中,如下:
public subThread implements Runnalbe{
public void run(){
Looper.prepare();
//程式區塊(譬如像在這裡寫handler.sendMessage(Message);指令)
Looper.loop();
}
這兩行method很關鍵,要重複丟出Message,程式碼就要被包含在這2個method當中。
註:如果啟動了Looper,當run()結束時,Thread也不會dead
run()結束並不能跟Thread會dead畫上等號吧...:) Looper的說明也似乎幫助不大~~
ReplyDelete