作者clairehuei (不是clairehuei 是桂)
看板AndroidDev
标题[问题] Thread与更新UI相关问题请教
时间Tue Sep 22 14:43:04 2015
最近在学习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://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1442904188.A.E21.html
1F:→ tracetw: 应为他是main thread 啊 09/22 14:47
2F:→ clairehuei: 但是onCreate里面修改UI的动作是在new thread里面 09/22 14:50
3F:→ clairehuei: thread id 也不是 main thread id 09/22 14:51
4F:→ ssccg: 启动後短时间内还可以从别的thread更新UI,也许是view到某 09/22 15:06
5F:→ ssccg: 个状态後才不能从其他thread更新吧,用Thread.sleep试试看 09/22 15:07
6F:→ ssccg: 另外那不叫ANR,ANR是app没有回应(main thread卡太久) 09/22 15:08
7F:→ clairehuei: 刚在onCreate的new thread中加入sleep後 09/22 15:17
8F:→ clairehuei: 的确就不能更新了! 09/22 15:18
9F:→ clairehuei: 感谢两位指教~ 09/22 15:46
10F:推 givemepass: 这个我倒是没发现过耶XD 也许是ssccg大说的那样 09/22 21:27
11F:→ givemepass: 不过焦点放错了 应该放在後面控制非ui都要丢到backgro 09/22 21:28