當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...