關於子執行緒與主線程與hander通訊

2021-08-16 09:36:30 字數 934 閱讀 2741

子執行緒不能更新ui,主線程不能做耗時操作。

操做流程是

子執行緒耗時完畢傳給handler sendmessage再傳給messagequeue再給looper最後傳給ui執行緒。

arg1/arg2傳遞整數型。

obj傳輸大部分。

what屬性判斷。

通過time=integer.

parseint(

ed1.gettext().tostring());獲取edittext中的內容並轉換為整數型。

具體**為

publichandlerhandler=newhandler()};

bt1.setonclicklistener(

newview.onclicklistener()

catch(interruptedexception e) } } }).start(); }});

使用hander的步驟是

在ui執行緒中建立hander匿名內部類;

在匿名內部類中重寫handdermessage方法;

在ui執行緒中啟動子執行緒;

將需要傳遞的資料賦值到message物件中;

通過hander物件的sendmessage方法傳送訊息到訊息陣列;

在handlemessage方法中接收訊息。

looper就是讓執行緒不停的迴圈工作讓普通執行緒成為迴圈執行緒。

當建立loooper時系統會自動建立乙個messagequeue。

乙個執行緒中只會存在乙個looper和乙個messagequeue。

Android UI主線程與子執行緒

乙個android 程式預設情況只有乙個程序,但是乙個程序可以有多個執行緒。其中有乙個ui 執行緒也稱為ui主線程,ui thread在android程式執行的時候就被建立,主要是負責控制ui介面的顯示 更新和控制項互動。所有的android應用程式元件 包括activity service bro...

APUE 執行緒 主線程與子執行緒的關係

include include include include include void pthread prc void arg int main int argc,char argv printf i am main n 執行的結果為 i am main 1 當主線程結束時,整個程序都會結束 子...

控制主線程與子執行緒執行順序

是從往往下順序執行,所以主線程執行完畢才能執行子執行緒,只要主線程 在子執行緒的start 方法之前就可以。子執行緒執行完畢,主線程才能繼續執行,最簡單方法是在主線程內子執行緒呼叫join 方法,如果是多個子執行緒執行完畢才能執行主線程,可以使用countdownlatch類。在主線程中執行awai...