Android根据线程结束而改变视图

问题描述

我在
onCreate()
中创建了一个线程。运行正常。现在,我想在线程结束时更改视图中的某些内容。但是,如果将其添加到
run()
方法中,则会产生
android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
错误。如何解决这个问题呢?
Thread updateThread = new Thread() {
 @Override
 public void run() {
  ................
  ................
   //this line is giving problem
loader.setVisibility(View.INVISIBLE);                               
 }
};
updateThread.start();
    

解决方法

        您应该使用AsyncTask http://developer.android.com/reference/android/os/AsyncTask.html而不是Thread,并在onPostExecute()中执行loader.setVisibility(View.INVISIBLE)     ,        在Android中,只有原始的UI-Thread才能对其视图进行更改。那是安全政策。这个较早的主题中也显示了一个您可能感兴趣的解决方案。 还可以查看Android的Handler-class(在上面的线程中使用)。 但是(如zerpage所述),AsyncTask可能是更好的方法。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...