Ui 工具包的标准是什么?

时间:2021-04-21 03:00:33

标签: android multithreading ui-thread

当我们尝试在 Thread 而不是 Ui 线程中更改 Ui takeit 时,我们会看到此错误。

W/System.err: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
W/System.err:     at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:7334)

我只是想知道 Ui 工具包的标准。

我认为每个视图都是一个 Ui 取景器。 但是我在另一个线程中将文本设置为 TextView,没有发生错误。 (TextView 没有出现在 MainActivity 的布局中)

那么,当前Activity的布局发生了Ui组件改变的错误是对的吗?

1 个答案:

答案 0 :(得分:0)

我想您知道 Google 为何称其为“UI 线程”。对? 这是 Google 文档中的一段:

<块引用>

当一个应用程序启动时,系统会创建一个线程 应用程序的执行,称为“main”。这个线程很 重要,因为它负责将事件分派给 适当的用户界面小部件,包括绘图事件。这是 也几乎总是您的应用程序与之交互的线程 来自 Android UI 工具包的组件(来自 android.widget 和 android.view 包)。因此,主线程是 有时也称为 UI 线程。

您可以在此处阅读更多信息:https://developer.android.com/guide/components/processes-and-threads#Threads

所以对于您的问题,当前 Activity 中不需要更改 UI 组件。

应该在主线程中更改

如果你更仔细地阅读谷歌的文档。您可以看到 Google 不建议更改或修改来自其他线程的视图。(不是 UI 线程)。

<块引用>
  1. 不要阻塞 UI 线程

  2. 不要访问 Android UI 工具包 UI线程外