在子執行緒中操作主線程

2021-06-21 22:05:14 字數 846 閱讀 6637

當android啟動activity時,會先啟動乙個主線程(也稱為ui執行緒),用於控制activity的當前view介面,在主線程控制的過程中,子執行緒是不能直接更新主線程資料的,但是android中提供了很多其他執行緒操作ui執行緒的方法

方法一:activity.runonuithread( runnable)

這是乙個在子執行緒中設定主線程中textview的例項:

needverify.this.runonuithread(new runnable() 

});

方法二:

handler

private handler handler=new handler()

} };

message message=new message();

message.obj=smilar;//傳遞的訊息

message.what=1;

handler.sendmessage(message);

這種方法實現的過程:

1、子執行緒利用handler傳送一條訊息,訊息被放在主線程的訊息佇列裡

2、主線程裡有乙個looper訊息的輪詢器

3、如果輪詢器發現新的訊息,呼叫handlemessage的方法處理訊息

好像還有view.post(runnable)、view.postdelayed(runnable,long)和asynctask這幾種方法可以實現這種操作,

不過以上兩種方法暫時夠用了,其他幾種情況以後再慢慢補充。

C 子執行緒操作主線程中的控制項

參考 有兩種方法可以選擇 1 在程式初始化的時候對要操作的控制項設定下面的屬性 system.windows.forms.control.checkforillegalcrossthreadcalls false 這樣,系統就不會再丟擲上面所說的這個錯誤了。從實質上說,該方法是通過採用取消執行緒安全...

主線程 子執行緒死掉 主線程可以在子執行緒之前死掉

我相信主線程不能在子執行緒之前死亡。但是有什麼方法可以檢查嗎?我在下面寫了乙個簡單的程式。任何人都可以證明它實際上離開理論嗎?class childre extends thread public void run for int i 0 i 10 i system.out.println chil...

主線程和子執行緒

子執行緒通過 handlerthread的thread.getlooper 繫結,在主線程的handler的handlermessage中呼叫threadhandler.sendmessagedelay msg,1000 向子執行緒傳送訊息。在子執行緒中通過handler.sendmessagede...