美文网首页
Android中为什么可以在非UI线程里更新UI组件?

Android中为什么可以在非UI线程里更新UI组件?

作者: zerone1 | 来源:发表于2017-03-23 21:21 被阅读0次

    说好的不能在非UI线程里更新UI组件呢?其实非UI线程是可以刷新UI的,前提是它要拥有自己的ViewRoot,ViewRoot是在onResume()里addview()创建的,所以是在 onResume()检查是否为UI线程,一般在onCreate()中通过子线程可以更新UI,但是要保证更新ui的时间很短,因为activity的生命周期函数为onCreate()->onStart()->onResume(),所以在onResume中检查是否为ui线程时,更新ui的操作已经在onCreate中进行了,但是若更新UI的过程时间太长的话,就会马上被onResume检查到,从而报错。毕竟从onCreate到onResume的时间很短。但官方不建议这样做,因为 Android UI操作并不是线程安全的。

    相关文章

      网友评论

          本文标题:Android中为什么可以在非UI线程里更新UI组件?

          本文链接:https://www.haomeiwen.com/subject/ikntottx.html