android-handler
2016-02-21 11:15
459 查看
android规定所有的UI更新操作都要写在主线程中,否则会抛异常,有时我们需要在子线程中更新UI那应该怎么做呢?
既然有需求就会有解决办法,那我们就要来了解一下handler了。
Message:线程之间传递的消息,它的what子段可以携带一些信息,obj还可以传对象
MessageQueue:消息队列,发送出来的message会存在队列中,每个线程只有一个该对象
Handler:用于发送和处理消息,一般是sendMessage传到handleMessage中
Looper:其loop方法用于从消息队列中取出消息并传给Handler处理
在子线程中定义一个message对象,给其what字段赋值并用handler发送
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
在主线程中执行更新
private Handler handler = new Handler(){
public void handleMessage(Message msg){
if(msg.what == 1){
//ui的更新操作
}
}
}
如果不需要传递数据而只是类似发出通知告诉ui更新则可用handler.sendEmptyMessage(1);参数就是message.what
既然有需求就会有解决办法,那我们就要来了解一下handler了。
Message:线程之间传递的消息,它的what子段可以携带一些信息,obj还可以传对象
MessageQueue:消息队列,发送出来的message会存在队列中,每个线程只有一个该对象
Handler:用于发送和处理消息,一般是sendMessage传到handleMessage中
Looper:其loop方法用于从消息队列中取出消息并传给Handler处理
在子线程中定义一个message对象,给其what字段赋值并用handler发送
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
在主线程中执行更新
private Handler handler = new Handler(){
public void handleMessage(Message msg){
if(msg.what == 1){
//ui的更新操作
}
}
}
如果不需要传递数据而只是类似发出通知告诉ui更新则可用handler.sendEmptyMessage(1);参数就是message.what
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories