[問題] Thread與更新UI相關問題請教

看板AndroidDev作者 (不是clairehuei 是桂)時間10年前 (2015/09/22 14:43), 編輯推噓1(1010)
留言11則, 4人參與, 最新討論串1/1
最近在學習android, 了解android的UI更新只能在main thread上進行, 在這個認知之下,我嘗試寫了一段code如下: https://gist.github.com/anonymous/3c03aa168b2188d5beaa 發現有些地方跟認知有差異,想請教一下各位先進: 1.點擊button觸發 clickButtonX() method後,該方法裡面new了一個新thread 並試圖修改按鈕的文字,結果不易外,出現ANR 2.我在onCreate()中 也new了一個新thread,一樣是試圖修改按鈕文字, 結果居然可以修改!? 以上兩點比較,我也在兩個method中各印出log,顯示當前的thread RunnableThreadId(1) = 1 RunnableThreadName(1) = main RunnableThreadId(2) = 16070 RunnableThreadName(2) = Thread-16070 RunnableThreadId(3) = 16072 RunnableThreadId(3) = Thread-16072 想請教大家,為什麼在onCreate另起的thread裡面可以更新UI呢? 懇請各位不吝指教,謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 202.173.43.196 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1442904188.A.E21.html

09/22 14:47, , 1F
應為他是main thread 啊
09/22 14:47, 1F

09/22 14:50, , 2F
但是onCreate裡面修改UI的動作是在new thread裡面
09/22 14:50, 2F

09/22 14:51, , 3F
thread id 也不是 main thread id
09/22 14:51, 3F

09/22 15:06, , 4F
啟動後短時間內還可以從別的thread更新UI,也許是view到某
09/22 15:06, 4F

09/22 15:07, , 5F
個狀態後才不能從其他thread更新吧,用Thread.sleep試試看
09/22 15:07, 5F

09/22 15:08, , 6F
另外那不叫ANR,ANR是app沒有回應(main thread卡太久)
09/22 15:08, 6F

09/22 15:17, , 7F
剛在onCreate的new thread中加入sleep後
09/22 15:17, 7F

09/22 15:18, , 8F
的確就不能更新了!
09/22 15:18, 8F

09/22 15:46, , 9F
感謝兩位指教~
09/22 15:46, 9F

09/22 21:27, , 10F
這個我倒是沒發現過耶XD 也許是ssccg大說的那樣
09/22 21:27, 10F

09/22 21:28, , 11F
不過焦點放錯了 應該放在後面控制非ui都要丟到backgro
09/22 21:28, 11F
文章代碼(AID): #1M0FXyuX (AndroidDev)