Only the original thread that created a view hierarchy can touch its views
时间: 2023-11-18 09:13:53 浏览: 134
这个错误通常是由于在非 UI 线程中更新 UI 控件而导致的。Android 中的 UI 控件只能在主 UI 线程中更新,如果尝试在其他线程中更新 UI 控件,就会导致这个错误。
解决这个问题的方法有以下几种:
1. 使用 Handler 或 AsyncTask:可以在非 UI 线程中使用 Handler 或 AsyncTask 来更新 UI 控件。它们都可以将更新操作 post 到主 UI 线程队列中,然后在主 UI 线程中执行。
2. 使用 runOnUiThread() 方法:如果在 Activity 中,可以使用 Activity 的 runOnUiThread() 方法来更新 UI 控件。这个方法会将更新操作 post 到主 UI 线程队列中,在主 UI 线程中执行。
3. 使用 View.post() 方法:可以使用 View 的 post() 方法将更新操作 post 到主 UI 线程队列中,在主 UI 线程中执行。
4. 使用 HandlerThread:可以创建一个 HandlerThread,在这个线程中执行耗时操作,并使用 Handler 将更新操作 post 到主 UI 线程队列中,在主 UI 线程中执行。
总之,无论哪种方法,都是为了将更新操作 post 到主 UI 线程队列中,在主 UI 线程中执行,以避免在非 UI 线程中更新 UI 控件导致的错误。
相关问题
only the original thread that created a view hierarchy can touch its views
这个错误信息意思是只有创建了一个视图层级结构的原始线程才能触碰(修改)它的视图。也就是说,如果其他线程尝试修改此视图层次结构中的视图,就会出现这个错误。
通常,在Android开发中,UI组件只能在创建它们的主线程中进行更新。如果你想在其他线程中更新UI组件,你需要使用相关的线程间通信技术,例如Handler或者runOnUiThread方法来在UI线程上执行更新操作。
Only the original thread that created a view hierarchy can touch its views.
这个错误信息意思是只有创建了一个视图层级结构的原始线程才能触碰(修改)它的视图。也就是说,如果其他线程尝试修改此视图层次结构中的视图,就会出现这个错误。
通常,在Android开发中,UI组件只能在创建它们的主线程中进行更新。如果你想在其他线程中更新UI组件,你需要使用相关的线程间通信技术,例如Handler或者runOnUiThread方法来在UI线程上执行更新操作。
阅读全文