HandlerDemo

preview
共55个文件
class:16个
png:13个
xml:8个
需积分: 0 1 下载量 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
上传资源 快速赚钱
voice
center-task 前往需求广场,查看用户热搜