HandlerDemo
需积分: 0 114 浏览量
更新于2016-12-13
收藏 2.33MB RAR 举报
HandlerDemo 是一个关于Android应用程序开发中的消息处理机制的示例,主要涉及到了Android中的`Handler`、`Looper`和`Message`三个核心组件。在Android系统中,主线程(也称为UI线程)负责处理用户交互和更新界面,而其他耗时操作(如网络请求、数据库操作等)通常在子线程中执行。`Handler`、`Looper`和`Message`的角色就是协调这些线程间的通信,确保UI线程不会被阻塞,从而提供流畅的用户体验。
1. **Handler**:
`Handler` 是Android中用于线程间通信的关键类,它定义了处理消息和Runnable对象的方法,如`handleMessage(Message msg)`和`post(Runnable r)`。开发者可以通过创建`Handler`实例,并重写`handleMessage()`方法来处理由其他线程发送过来的消息。`Handler`与创建它的线程绑定,当调用`sendMessage()`或`post()`时,消息会被添加到该线程的MessageQueue中。
2. **Looper**:
`Looper` 是消息循环的载体,它负责从消息队列中取出消息并分发给相应的`Handler`进行处理。每个线程默认都有一个`Looper`,但主线程的`Looper`是预先准备好的,而在子线程中,我们需要手动调用`Looper.prepare()`和`Looper.loop()`来启动消息循环。
3. **Message**:
`Message` 类是用来承载数据的,它可以携带不同类型的数据,如整型、字符串、对象等。`Message`通过`Handler`发送到目标线程,然后在`handleMessage()`方法中被处理。`Message`对象通常通过`obtain()`方法获取,以复用已有的消息对象,避免内存浪费。
4. **工作流程**:
- 子线程中,创建`Handler`实例,并调用`Looper.prepare()`初始化`Looper`。
- 调用`Looper.loop()`启动消息循环,这将使子线程进入无限循环,等待处理消息。
- 在子线程中,创建`Message`对象,设置目标`Handler`和要传递的数据,然后调用`Handler.sendMessage()`发送消息。
- 消息被放入主线程的消息队列中。
- 主线程的`Looper`检测到消息队列中有新消息,取出并分发给对应的`Handler`。
- 主线程中的`Handler`接收到消息后,调用`handleMessage(Message msg)`进行处理。
5. **应用场景**:
- 异步任务:例如网络请求完成后,通过`Handler`更新UI。
- 延时操作:使用`Handler.postDelayed()`实现定时任务。
- 线程间通信:不同线程之间传递数据和指令。
在L05_App_Handler这个文件夹中,可能包含了展示如何在Android应用中使用`Handler`进行线程间通信的代码示例,包括创建`Handler`实例、发送`Message`、处理消息等步骤。通过学习这个示例,你可以更深入地理解Android中的多线程同步和UI更新机制。
小学留了三年级
- 粉丝: 14
- 资源: 10
最新资源
- 喷塑六轴机器人设计x_t全套技术资料100%好用.zip
- 云开发校园宿舍/企业/部门/物业故障报修小程序源码
- 一款轻量且高效的Excel读写工具,它具有包体小、接入代码量少和运行时消耗资源少等优点 它支持10M内存读写百万级数据,同时支持Stream+Lambda方式读文件使你可以像操作集合类一样操作Exce
- [完结16章附课件]手把手带你实战一线大厂微服务全链路追踪
- 相平面法 “质心侧偏角-质心侧偏角速度” 可自主调节参数根据不同的速度和车轮转角以及前后轮的滑移率等变量生成相平面图,更加有利于状态分析 包含m文件以及资料,非常详细,通俗易懂
- (177443464)Python实现的热点舆情分析统计系统.zip
- mysql5.7的docker镜像
- (175960652)用于深度学习 (YOLO)准备数据集中的数据标注软件 - labelimg
- (179305024)人口普查数据(五 、六、七普)
- (42920418)全国第七人口普查数据(到各省).xls
- (176671056)JAVA课程设计,学生管理系统,设计SQL server数据库操作
- (174724650)小米商城(HTML+CSS)网页设计期末作业
- (178777442)HTML实验小米商城首页
- 基于java+springboot+mysql+微信小程序的百货中心供应链管理系统 源码+数据库+论文(高分毕业设计).zip
- 基于java+springboot+mysql+微信小程序的毕业生就业信息管理系统 源码+数据库(高分毕业设计).zip
- (171059634)小米官网界面html,css,img,js