本文将从子线程不能更新UI的直接原因、根本原因、Android如何做到限制以及子线程该如何正确更新UI四个方向回答问题。
【直接原因】在子线程中更新UI会怎样?
程序会出现以下错误: Only the original thread that created a view hierarchy can touch its views.
【根本原因】看到问题的本质(根本原因)
多线程操作UI是不安全的,那么为什么不安全?..
假设子线程能够更新UI,现在有个TextView显示数字1,我们现在需要对这个textview的现在的数字加1显示2,即 tv.text = tv.text +1
tv.text = (tv.text.toString().toIntOrNull()?:0 + 1).toString()
我们把这个模型简化,这个计算类似于 x = x +1 的操作
x = x +1
那么证明 x = x +1不是线程安全的也就证明多线程操作 tv.text = tv.text +1 也不是安全的
标签:ViewRootImpl,tv,UI,线程,Android,xadd From: https://www.cnblogs.com/xqz0618/p/18227049