1、使用Thread+Handler实现非UI线程更新UI界面

在UI Thread中创建Handler。用sendMessage(message)或者obtainMessage(result, obj).sendToTarget()在handleMessage方法中更新UI。

推荐使用obtainMessage(result, obj).sendToTarget()。由于这种方法会先去消息池中看看有没有Message,假设有。则取出这个Message,假设没有再去创建。这个能够防止Message对象的反复创建,节省资源。

而sendMessage(message)则每次要先new Message。
private MyHandler mHandler = new MyHandler();

......
mHandler.sendResult(MyHandler.UPDATE_VIEW, null);
...... private class MyHandler extends Handler{
private static final int UPDATE_VIEW = 0;
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case UPDATE_VIEW:
updateView();
break;
default:
break;
}
}
private void sendResult(int result, Object obj) {
Message message = new Message();
message.what = result;
message.obj = obj;
sendMessage(message);
//obtainMessage(result, obj).sendToTarget(); //效率更高
  }
}

或者用Handler.post(runnable)的方法去更新UI。

2、使用View的post方法来更新UI

	mView.post(new Runnable() {
@Override
public void run() {
updateView();
}
});

3、使用Activity.runOnUiThread(runnable)的方法来更新UI

最新文章

  1. 普林斯顿算法课第五周作业_KdTree
  2. Java学习笔记(二二)——Java HashMap
  3. LoadRunner中文乱码问题解决方案
  4. 51nod1244 莫比乌斯函数之和
  5. Asynctask的使用及理解
  6. hdu 1250 Hat's Fibonacci(高精度数)
  7. CMD修改IP地址
  8. 论JVM爆炸的几种姿势及自救方法,你不得不知!
  9. PL/SQL连接远程服务器数据库,出现ORA-12154: TNS: 无法解析指定的连接标识符。
  10. MySQL数据类型优化—整数类型优化选择
  11. 京东某商品页面的简单爬取 --Pyhon网络爬虫与信息获取
  12. react 路由跳转问题
  13. CUBA 7 新特性(上篇)
  14. Winform 多个窗口编辑同一条数据同步的实现
  15. c模拟银行家资源分配算法
  16. 【转】实现Http Server的三种方法
  17. 记一次安装多版本php的四个雷区,你踩着了吗
  18. [Leetcode Week14]Construct Binary Tree from Inorder and Postorder Traversal
  19. python selenium--常用函数3
  20. golang 开发过程中的坑

热门文章

  1. Android Activtity Security(转)
  2. 最快的csv文件入到数据库的方法
  3. Vue实例详解与生命周期
  4. UIButton中的三个UIEdgeInsets属性
  5. Openshift 节点添加和删除
  6. C#.net开发 List与DataTable相互转换 【转】
  7. Parallax Occlusion Mapping in GLSL [转]
  8. http://blog.csdn.net/congcong68/article/details/39256307
  9. DevExpress 自动匹配宽度,及其他使用笔记
  10. 转:一位10年Java工作经验的架构师聊Java和工作经验