Android之Handler
来源:互联网 发布:擎洲广达软件 编辑:程序博客网 时间:2024/09/21 08:14
(一)Handler是什么
一套用于更新UI和用于消息发送及处理的机制
(二)Hanler的简单用法
1.更新UI
- 创建Handler对象
- 在子线程中用post方法实现Runnable接口,在run方法中进行UI更新
其他方法:
handler.postDelayed(线程对象,延迟时间);
2.消息处理
- 创建Handler对象,实现hanleMessage:方法
- 在子线程中的run方法中创建Message对象,并让handler对象执行sendMessage方法:
(还可以用handler.obtainMessage()方法来创建message对象)
(也可以用message.sendToTarget()方法发送消息,Target就是handler自己)
- message可以传递对象参数,用message.obj = 对象
3.移除消息
handler.removeCallbacks(要移除的线程对象);
(三)Handler与Looper,MessageQueue的关系
- handler:工人——内部与Looper进行关联
- looper:传送带移动的动力——内部包含一个MessageQueue,调用Looper.Looper来不断从消息队列中获取信息
(用Looper.prepare()创建一个looper,内部关联方法会创建一个messagequeue对象)
- messagequeue(消息队列):传送带——所有Handler发送的消息都会放进这里
- message:传送带上面的货物。
工人(handler)把自己的产品(message)放在传送带(messagequeue)尾部,在动力(looper)作用下,传送带向前移动,最终产品到达传送带头部,又被工人(handler)取出来处理(handmessage())。
(四)自定义与子线程相关的Handler
- 在子线程中创建handler对象
在主活动中调用子线程中的handler对象来执行sendMessage方法
解决多线程的Handler可能未创建Looper对象而抛出异常的问题,可以用HandlerThread解决,调用它的getLooper方法可以防止获得空Loop
原理:
(五)主线程向子线程发送信息:
在主线程的handler对象中的handleMessage方法中调用子线程的handler对象的sendMessage方法
- Android之handler使用
- android之handler使用
- Android 之 handler 学习
- Android 之 handler
- android之handler总结
- Android之Handler学习
- android之handler使用
- Android之handler讲解
- Android开发之Handler
- android之Handler
- Android 之 Handler总结
- android之Handler用法
- Android之Handler
- Android 之Handler
- Android之Handler
- Android开发之handler
- Android之Handler高级
- Android笔记之handler
- myeclipse优化
- 备忘录
- OpenJudge 2.6-1775 采药
- 静态链表的C++简单实现
- Spring源码(三)-Context的创建(下)
- Android之Handler
- 阿里的Java面试经验---二
- 面向对象学习笔记
- 唐山三百首
- Spring源码(四)-bean的加载(上)
- struts2之拦截器(interceptor)
- C++中,get和getline函数的区别
- Spring源码(五)-bean的加载(下)
- 扑克牌顺子