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

说好的不能在非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操作并不是线程安全的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容