Android:只有创建 View 层次结构的原始线程在调用 invalidate() 时才能触摸其 View

标签 android invalidation

我正在尝试使用 Movie 对象播放 gif,它需要我调用 invalidate() 方法。但是,每当我调用此方法时,都会收到以下错误:

android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

如何解决这个问题以及为什么会发生

最佳答案

在 UI 线程上运行指定的操作。

我想推荐阅读这个网站runOnUiThread

runOnUiThread(new Runnable() {
  @Override
  public void run() {
    // call the invalidate()
  }
});

关于Android:只有创建 View 层次结构的原始线程在调用 invalidate() 时才能触摸其 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45414909/

相关文章:

android - 在 OpenGL ES 2.0 和索引信息中使用单独的缓冲区

java - onCreate() 被无限调用

C# 无效问题

android - 从 onDraw() 调用 invalidate() 会导致堆栈溢出吗?

Android,如何为离线应用保留本地加密数据库的 key ?

android - 如何将 ProgressBar 的样式更改为小?

android - 获取当前位置location android

android - 图像的 GridView 没有得到刷新

vector - 在迭代向量时推送到向量时,Rust 会保护我免受迭代器失效吗?

java - iText 冲压 - Java