Android執行緒間的訊息傳遞

2021-09-02 13:38:55 字數 1474 閱讀 1886

一、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...