最近在做安卓项目时,遇到一个问题,在工作线程中不能更新UI,否则会报错。可以使用Handle来实现在工作线程中更新UI。

Handler简单的使用方法

(1)先声明一个Handler对象,并初始化;

// 声明Handler对象,并初始化
private Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what){case 0:// TODO 更新UItextView.setText("Hello, World!"); //textView是一个TextView的对象,通过 TextView textView= (TextView) findViewById(R.id.text);获取。 text是该TextView的idbreak; }}};

(2)在工作线程中调用handler来更新UI;

// handler的调用方法——该方法是在工作线程中被调用的
public void showMessage(String message) {handler.sendEmptyMessage(0); // handler根据传递的参数来对应更新UI}

Handler传递参数更新UI

(1)先声明一个Handler对象,并初始化;

private Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what){case 0:// TODO 更新UIBundle bundle = msg.getData();String mess = bundle.getString("MESS");textView.setText(mess); //textView是一个TextView的对象,通过 TextView textView= (TextView) findViewById(R.id.text);来获取。 text是该TextView的idbreak; case 1:List<T> list = (List<T>)msg.obj;showData(list);  // 调用普通的方法break;case 2:Map<T, T> map = (Map<T, T>)msg.obj;showData(map);   // 调用普通的方法break;}}};

(2)在工作线程中调用handler来更新UI,在调用的时候通过传参方式传递数据;

/** (1)传递简单的字符串*/
public void showStringMessage(String message) {Message mess = handler.obtainMessage(); // 先获得Message的对象mess.what = 0;  Bundle bundle = new Bundle(); bundle.putString("MESS", message);mess.setData(bundle);handler.sendMessage(mess);}/** (2)传递对象——Map跟List均可以这样传递*  传递List*/
public void showObjectMessage(List<T> list) {  Message mg = handler.obtainMessage();mg.what = 1;mg.obj = list;handler.sendMessage(mg);}/**  传递Map*/
public void showObjectMessage(Map<T, T> map) {  Message mg = handler.obtainMessage();mg.what = 2;mg.obj = map;handler.sendMessage(mg);}

Android Handle用法相关推荐

  1. android handle 用法

    方法一:(java习惯,在android平台开发时这样是不行的,因为它违背了单线程模型) 刚刚开始接触android线程编程的时候,习惯好像java一样,试图用下面的代码解决问题 new Thread ...

  2. 【转】 Android - LayoutInflate用法

    [转自]http://blog.csdn.net/scut1135/article/details/7055461 通俗的说,inflate就相当于将一个xml中定义的布局找出来. 因为在一个Acti ...

  3. MTK驱动(77)---Android getevent用法

    Android getevent用法 getevent命令用法如下: Usage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-d] [ ...

  4. Android inflater用法

    Android inflater用法 简介 具体作用 获取layoutInflater的三种方式 源码查看 返回值结果 注意 简介 在实际的开发中layoutInflater这个类的主要的主要的作用类 ...

  5. android plurals用法

    参考 android plurals用法 对一个给定的语言和数字来说,决定使用哪一个case的规则是很复杂的,所以android提供了方法getQuantityString(),它可以用来为你选择合适 ...

  6. android plurals用法(单复数)

    0.相关文章 android plurals用法 Android中的string资源占位符及Plurals string 1.使用 对一个给定的语言和数字来说,决定使用哪一个case的规则是很复杂的, ...

  7. Android.mk 用法介绍

    一个Android.mk file用来向编译系统描述你的源代码.具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次.你可以在每一个Android.mk file中定义一个 ...

  8. android五大布局的用法,android:stretchColumns用法

    TableLayout是一个使用复杂的布局,最简单的用法就仅仅是拖拉控件做出个界面,但实际上,会经常在代码里使用TableLayout,例如做出表格的效果.本文主要介绍TableLayout的基本使用 ...

  9. Android Scroller用法

    为什么80%的码农都做不了架构师?>>>    概述 Android里Scroller类是为了实现View平滑滚动的一个Helper类.通常在自定义的View时使用,在View中定义 ...

最新文章

  1. 2013搜狗校园招聘笔试题
  2. [html] 可以给内联元素设置宽和高吗?为什么?
  3. iptables之NAT
  4. Thinkphp 实现上一篇与下一篇的方法
  5. 序列化和反序列化(八)——Externalizable接口
  6. Mybtis进行mysql数据库的修改表名操作
  7. JSONP原理及使用
  8. html5彩盒插件画廊,jQuery轻量级响应式LightBox图片画廊插件
  9. 云计算机是对什么技术的发展,云计算是对什么技术的发展与运用
  10. beamer插入参考文献并引用(BibTex)
  11. LFS详细搭建指南——适合初学者使用
  12. 关于移动端H5获取微信非静默授权被拦截进入【微信快照页】问题及解决方案
  13. BaaS、FaaS、Serverless都是什么馅儿?
  14. Github连接不上怎么办?
  15. 计算机专业毕业设计致谢,计算机毕业论文致谢范文3篇
  16. vs2013 番茄助手Visual AssistX插件的安装与使用
  17. linux基础——echo
  18. [js操作(转)]在IE下js操作本地文件相关方法
  19. 2004版最新核心期刊目录
  20. 孤岛危机2通关,看到这篇剧情,太精彩忍不住转了--孤岛危机2详细剧情。

热门文章

  1. mysql引擎与优化
  2. java动态图片_Java之简单的图片动态显示(实现类似GIF动画效果)
  3. CSS如何清除默认样式,背景属性
  4. 南京师范大学计算机技术研究生就业,重磅!2017年南京师范大学毕业研究生就业质量报告新鲜出炉...
  5. 研发质量管理工作经验总结(二)----质量管理技能
  6. iOS 发布证书申请 (转载)
  7. 博客推荐|使用自定义指标在 Kubernetes 中自动扩展 Pulsar Functions
  8. 平衡小车c语言程序,【全部开源】两轮平衡小车(原理图、PCB、程序源码、BOM等)...
  9. pwm占空比的c语言编程详解,盘点占空比、PWM、GPIO三者含义及原理分析
  10. Python地理数据处理 十五:基于arcpy的批量操作