Message,MessageQueue,Looper,Handler详解[归类].pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
【Message】:Message是Android系统中用于在不同线程间传递数据的核心类。它是一个轻量级的对象,用于封装待处理的数据和指令。Message对象通常包含一个what整型标识符来区分不同的消息类型,以及arg1和arg2作为附加参数。Message还可以携带一个Bundle对象,用于存储更复杂的数据。Message的实例可以通过Message类的静态方法`obtain()`来获取,这个方法会尝试从Message Pool中复用已有的Message,以减少内存分配开销。如果Message Pool为空,才会创建新的Message对象。当消息不再需要时,应调用`recycle()`方法将其回收到Message Pool。 【MessageQueue】:MessageQueue是消息队列,用于存储待处理的Message对象。它是每个线程中的消息调度中心,按照FIFO(先进先出)原则处理Message。MessageQueue与Looper紧密配合,当MessageQueue中有新消息时,Looper会取出并分发给对应的Handler进行处理。主线程默认已经创建了MessageQueue和Looper,而在其他非主线程中,开发者需要手动调用`Looper.prepare()`来初始化Looper和MessageQueue。 【Looper】:Looper是线程中的消息循环器,负责从MessageQueue中取出Message并交给相应的Handler进行处理。Looper通过`loop()`方法执行一个无限循环,不断检查MessageQueue是否有新消息。主线程的Looper会持续运行,直到应用退出。开发者可以通过`Looper.quit()`或`Looper.quitSafely()`来停止Looper的循环,从而结束消息处理。此外,`Looper.myLooper()`可以获取当前线程的Looper实例。 【Handler】:Handler是处理消息的核心组件,它负责创建Message,将Message放入MessageQueue,以及处理来自Looper的消息。Handler有两种主要的使用方式:一是通过`sendMessage()`系列方法将Message放入MessageQueue,二是通过`handleMessage()`方法处理从Looper传来的消息。Handler还提供了`post()`方法,用于将Runnable对象放入MessageQueue,同样会按照消息循环的方式进行处理。每个Handler都关联了一个Looper和MessageQueue,因此它能够接收并处理与其关联线程中的消息。 在Android系统中,Message, MessageQueue, Looper, 和 Handler共同构成了一个跨线程通信机制,使得UI线程和其他工作线程之间能安全地交换数据和执行任务,这对于实现复杂的异步操作和保持用户界面的响应性至关重要。在实际开发中,理解这四个组件的运作原理和交互方式,是构建高效、稳定Android应用程序的基础。
- 粉丝: 7
- 资源: 14万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助