Handler

Handler mHandler = new Handler() {          @Override          public void handleMessage(Message msg) {              super.handleMessage(msg);              switch (msg.what) {              case 0:                  //完成主界面更新,拿到数据                 String data = (String)msg.obj;                  updateWeather();                  textView.setText(data);                  break;              default:                  break;              }          }      };  

子线程发消息,通知Handler完成UI更新

private void updateWeather() {          new Thread(new Runnable(){              @Override              public void run() {                  //耗时操作,完成之后发送消息给Handler,完成UI更新;                 mHandler.sendEmptyMessage(0);                  //需要数据传递,用下面方法;                 Message msg =new Message();                  msg.obj = "数据";//可以是基本类型,可以是对象,可以是List、map等;                 mHandler.sendMessage(msg);              }          }).start();      }  

在子线程中通过runOnUiThread()方法更新UI

new Thread() {              public void run() {                  //这儿是耗时操作,完成之后更新UI;                 runOnUiThread(new Runnable(){                      @Override                      public void run() {                          //更新UI                         imageView.setImageBitmap(bitmap);                      }                  });              }          }.start();  

在非上下文类中(Activity),可以通过传递上下文实现调用

Activity activity = (Activity) imageView.getContext();                  activity.runOnUiThread(new Runnable() {                      @Override                      public void run() {                          imageView.setImageBitmap(bitmap);                      }                  }); 

View.post(Runnable r)
这种方法更简单,但需要传递要更新的View过去

imageView.post(new Runnable(){                      @Override                      public void run() {                          imageView.setImageBitmap(bitmap);                      }                  }); 

更多相关文章

  1. android之SQLite数据库insert操作
  2. Android 一个下载任务分为多个线程下载
  3. android 以编程的方式使用SQLite数据库 执行CRUD(创建 读取 更新
  4. android操作sqlite3的blob字段,显示数据中的图片
  5. Android中内容提供者ContentProvider实现数据库增删改查
  6. android中如何解析没有Key的Json数据
  7. Android 中的Intent在两个Acitvity传递数据示例
  8. 数据库判断是否为某一个值时sql
  9. Android 多线程1

随机推荐

  1. Android双击
  2. android menu自定义菜单 Demo
  3. android > 屏蔽掉返回键
  4. 第一代Android壳源码--某某公司早期壳代
  5. How to fix the Android AVD no target p
  6. Android之关于Intent的Flag属性的讲解
  7. 在服务器上使用grandle打包android源码
  8. DownloadManager 文件下载
  9. android 模拟器中找不到程序
  10. Android电视关闭效果