[問題] 關於handler & thread的理解
各位好
小弟在跟同事解釋Handler 和 thread時,
可能因為自己觀念不是很扎實,
所以解釋到後來,
反而產生了一些困惑,
但是後來坐下來仔細思考,似乎有了答案
還請各位幫我確認我的思考是否正確
我解釋的程式碼如下
thread = new HandlerThread("demo");
thread.start();
thread_h = new Handler(thread.getLooper());
thread_h.post(changeText);
private Runnable changeText = new Runnable() {
public void run() {
tvThread.setText("I'm Thread");
}
};
當下看到投影片的時候,我覺得tvThread.setText("I'm Thread"); 這邊應該錯了
要用runOnUiThread(tvThread.setText("I'm Thread")); 才對
但是程式run了以後卻沒報錯,
仔細思考過後我的理解如下:
讓handler建立的thread為main thread之外的thread,
此時若Main thread已執行完畢,runnaable中對ui的控制可以不必用runOnUiThread
(因為demo就是main thread,如此例),
但若main thread尚未執行完畢,則一定要用runOnUiThread
(因為demo此時非main thread)
故,保險起見,都用runOnUiThread
就可以避免還要考慮main thread到底執行完了沒的問題
以上,若有錯請指正
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 27.241.203.198
推
08/15 22:38, , 1F
08/15 22:38, 1F
→
08/16 00:18, , 2F
08/16 00:18, 2F
→
08/16 02:30, , 3F
08/16 02:30, 3F
→
08/16 02:40, , 4F
08/16 02:40, 4F
→
08/17 00:32, , 5F
08/17 00:32, 5F
→
08/17 10:58, , 6F
08/17 10:58, 6F