一、ui執行緒往其他theard傳遞訊息
1、ui端傳遞方式:
a、首先讓handler ontain乙個message
b、然後sendtotarget
2、其他thread接受ui執行緒傳遞內容:
a、實現run方法
b、looper初始化:looper.prepare
c、handler物件初始化:實現handlermessage方法
d、looper loop迴圈等待
new mytheard01().start();
findviewbyid(r.id.btn01).setonclicklistener(new view.onclicklistener()
});
class mytheard01 extends thread }};
start loop
looper.loop();
}}
二、其他theard傳遞訊息到ui執行緒
1、其他theard 首先用handler乙個message,然後sendtotarget出去
2、ui端new乙個handler物件接受訊息就可以了
注:和ui執行緒往其他theard傳遞訊息不同的是,其他theard往ui執行緒傳遞訊息不需要looper的初始化和loop,因為ui執行緒本身就有messagequeue
findviewbyid(r.id.btn02).setonclicklistener(new view.onclicklistener()
});
mhandler02 = new handler()
}};
class mythread02 extends thread
}
另:由於我們通常獲取伺服器返回資料都寫在單獨的執行緒中進行,現提供幾種常見的其他theard傳遞訊息到ui執行緒更新ui資料的方法:
a、就是如上講解的通過handler來傳遞
b、android api中提供的activity.runonuitheard(runnable)
c、view.post(runnable)
三、a執行緒往b執行緒傳遞訊息:類似ui執行緒往其他theard傳遞訊息,重要的是在目標執行緒中要開啟loop迴圈
new mytheard03().start();
findviewbyid(r.id.btn03).setonclicklistener(new view.onclicklistener()
});
class mytheard03 extends thread }};
looper.loop();
}}class mytheard04 extends thread
}
Android訊息傳遞之元件間傳遞訊息
前言 上篇學習總結了android通過handler訊息機制實現了工作執行緒與ui執行緒之間的通訊,今天來學習一下如何實現元件之間的通訊。本文依然是為學習eventbus做鋪墊,有對比才能進步,今天主要介紹在eventbus出現之前的實現方式,通過intent方式這裡不做介紹。需求場景 方式一 通過...
Android 訊息傳遞
在建立handler時,handler在其構造方法中 嘗試從當前執行緒 建立hanlder例項物件的執行緒 的threadlocal中取到looper物件 並將該looper物件賦值給當前hanlder物件,同時還會將looper物件的messagequeue引用賦值給當前handler。publi...
程序間傳遞訊息
使用自定義訊息 1 首先定義訊息 例如 define wm yourmesg wm user 100 2 加入訊息響應巨集,在響應該訊息的類中 c c code?1 2 3 4 5 begin message map cchiliddlg,cdialog afx msg map end messag...