返回介绍

MessageQueue

发布于 2025-03-09 17:00:22 字数 1949 浏览 0 评论 0 收藏 0

MessageQueue

译者微博: http://t.qq.com/strongxu

版本:Android 3.1 r1

结构

继承关系

public class MessageQueue extends Object

java.lang.Object

android.os.MessageQueue

类概述

保存消息列表的低级别类,这些消息由 Looper 对象派发。消息并不是直接添加到 MessageQueue 中的,而是通过与 Looper 对象关联的 MessageQueue.IdleHandler 对象添加的。

调用 Looper.myQueue 方法可以获取当前线程的 MessageQueue。

公共方法

public final void addIdleHandler (MessageQueue.IdleHandler handler)

向消息队列中添加一个新的 MessageQueue.IdleHandler。当调用 IdleHandler.queueIdle() 返回 false 时,此 MessageQueue.IdleHandler 会自动的从消息队列中移除。或者调用 removeIdleHandler(MessageQueue.IdleHandler) 也可以从消息队列中移除 MessageQueue.IdleHandler。

此方法是线程安全的。

参数

handler 要添加的 IdleHandler。

public final void removeIdleHandler (MessageQueue.IdleHandler handler)

从队列中移除之前调用 addIdlehandler(MessageQueue.IdleHandler) 添加的 MessageQueue.IdleHandler。如果 handler 不在当前的空闲列表,不做任何事。

参数

handler 要移除的 IdleHandler。

受保护方法

protected void finalize ()

在对象被 VM 回收之前调用。只有当垃圾回收器检测到运行的所有线程都不再使用此对象时才会出现。

在对象被垃圾回收之前,此方法可以用来释放系统资源或者做其他的清理工作。默认的此方法实现是空的,这也是 VM 所期望的,但是子类可以重写此方法。在此方法执行是抛出的未捕获异常会导致程序立即结束,否则则会忽略异常。

注意,VM 会保证任何对象的 finalize 方法最多调用一次,但是它不会保证何时(或者是否)会调用 finalize。例如,对象 B 的 finalize 方法可以推迟执行对象 A 的 finalize,因此它会导致推迟回收 A 的内存空间。为了安全,使用 ReferenceQueue ,因为在垃圾回收时,它在 VM 处理引用的方式上提供了更多的控制方法。

补充

文章精选

android 线程 Handler Message Queue AsyncTask 线程模型

Android 中的 Handler, Looper, MessageQueue 和 Thread

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文