Android Handle用法
最近在做安卓项目时,遇到一个问题,在工作线程中不能更新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用法相关推荐
- android handle 用法
方法一:(java习惯,在android平台开发时这样是不行的,因为它违背了单线程模型) 刚刚开始接触android线程编程的时候,习惯好像java一样,试图用下面的代码解决问题 new Thread ...
- 【转】 Android - LayoutInflate用法
[转自]http://blog.csdn.net/scut1135/article/details/7055461 通俗的说,inflate就相当于将一个xml中定义的布局找出来. 因为在一个Acti ...
- MTK驱动(77)---Android getevent用法
Android getevent用法 getevent命令用法如下: Usage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-d] [ ...
- Android inflater用法
Android inflater用法 简介 具体作用 获取layoutInflater的三种方式 源码查看 返回值结果 注意 简介 在实际的开发中layoutInflater这个类的主要的主要的作用类 ...
- android plurals用法
参考 android plurals用法 对一个给定的语言和数字来说,决定使用哪一个case的规则是很复杂的,所以android提供了方法getQuantityString(),它可以用来为你选择合适 ...
- android plurals用法(单复数)
0.相关文章 android plurals用法 Android中的string资源占位符及Plurals string 1.使用 对一个给定的语言和数字来说,决定使用哪一个case的规则是很复杂的, ...
- Android.mk 用法介绍
一个Android.mk file用来向编译系统描述你的源代码.具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次.你可以在每一个Android.mk file中定义一个 ...
- android五大布局的用法,android:stretchColumns用法
TableLayout是一个使用复杂的布局,最简单的用法就仅仅是拖拉控件做出个界面,但实际上,会经常在代码里使用TableLayout,例如做出表格的效果.本文主要介绍TableLayout的基本使用 ...
- Android Scroller用法
为什么80%的码农都做不了架构师?>>> 概述 Android里Scroller类是为了实现View平滑滚动的一个Helper类.通常在自定义的View时使用,在View中定义 ...
最新文章
- 2013搜狗校园招聘笔试题
- [html] 可以给内联元素设置宽和高吗?为什么?
- iptables之NAT
- Thinkphp 实现上一篇与下一篇的方法
- 序列化和反序列化(八)——Externalizable接口
- Mybtis进行mysql数据库的修改表名操作
- JSONP原理及使用
- html5彩盒插件画廊,jQuery轻量级响应式LightBox图片画廊插件
- 云计算机是对什么技术的发展,云计算是对什么技术的发展与运用
- beamer插入参考文献并引用(BibTex)
- LFS详细搭建指南——适合初学者使用
- 关于移动端H5获取微信非静默授权被拦截进入【微信快照页】问题及解决方案
- BaaS、FaaS、Serverless都是什么馅儿?
- Github连接不上怎么办?
- 计算机专业毕业设计致谢,计算机毕业论文致谢范文3篇
- vs2013 番茄助手Visual AssistX插件的安装与使用
- linux基础——echo
- [js操作(转)]在IE下js操作本地文件相关方法
- 2004版最新核心期刊目录
- 孤岛危机2通关,看到这篇剧情,太精彩忍不住转了--孤岛危机2详细剧情。
热门文章
- mysql引擎与优化
- java动态图片_Java之简单的图片动态显示(实现类似GIF动画效果)
- CSS如何清除默认样式,背景属性
- 南京师范大学计算机技术研究生就业,重磅!2017年南京师范大学毕业研究生就业质量报告新鲜出炉...
- 研发质量管理工作经验总结(二)----质量管理技能
- iOS 发布证书申请 (转载)
- 博客推荐|使用自定义指标在 Kubernetes 中自动扩展 Pulsar Functions
- 平衡小车c语言程序,【全部开源】两轮平衡小车(原理图、PCB、程序源码、BOM等)...
- pwm占空比的c语言编程详解,盘点占空比、PWM、GPIO三者含义及原理分析
- Python地理数据处理 十五:基于arcpy的批量操作