Android.Util.AndroidRuntimeException: 'Only the original thread that created a view hierarchy can touch its views.'
时间: 2023-11-18 19:52:17 浏览: 185
这个异常是因为在非UI线程中尝试操作UI视图。在Android中,只有创建视图层次结构的原始线程(通常是主线程)可以触摸其视图。为了解决这个问题,你需要确保在UI线程中更新或访问UI视图。
你可以使用以下方法来避免此异常:
1. 使用runOnUiThread方法在非UI线程中更新UI视图。例如:
```java
runOnUiThread(new Runnable() {
public void run() {
// 在这里更新或访问UI视图
}
});
```
2. 使用Handler类来发送消息到主线程,在主线程中处理UI视图的更新。例如:
```java
Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
public void run() {
// 在这里更新或访问UI视图
}
});
```
3. 使用AsyncTask类执行后台任务,并在onPostExecute方法中更新UI视图。例如:
```java
private class MyTask extends AsyncTask<Void, Void, Void> {
protected Void doInBackground(Void... params) {
// 后台任务
return null;
}
protected void onPostExecute(Void result) {
// 在这里更新或访问UI视图
}
}
```
请记住,在非UI线程中进行耗时操作,而不是直接操作UI视图,这样可以避免ANR(Application Not Responding)错误。
阅读全文