Android 中的消息队列是什么?

What's message queue in Android?

谁能解释一下 Android 中的消息队列是什么?是进程列表运行吗?我找不到一个很好的来源来解释它。

我问是因为我正在阅读 class 视图的方法 post。

POST

已添加到 API 级别 1 布尔值 post(可运行的操作)

Causes the Runnable to be added to the message queue. The runnable will be run on the user interface thread.

提前致谢。

简单来说,MessageQueue 是将在特定线程中执行的任务(消息、可运行对象)列表。 Android 系统有一个非常有名的主线程(UI 主线程)。您刚才看到的方法只是简单地将一个可运行对象添加到将在 UI 线程中执行的进程列表中。与 Looper 和 Handler 一起,MessageQueues 是 Android 中线程构建块的一部分,它们几乎在系统中的任何地方都被使用。

你什么时候会用到这个方法?

每当您想从另一个线程更新某些 UI 元素(视图元素)时。也许你正在另一个线程中做一些繁重的工作并想更新 UI 元素,你不能更新其他线程中的 UI 元素,但 UI 线程所以你 post 更改将在 UI 线程中执行。

您可以了解有关消息队列的更多信息here and here

要了解 MessageQueue,您需要了解 android 应用程序的执行模型;

就像Javascript、Cocoa在iOS一样,为了避免并发访问竞争,很多App相关的框架都采用了单线程模型。

也就是说有一个主线程,你把你需要做的工作放到这个线程专用的队列(MessageQueue)中,有一个worker(Looper)会从队列中接收你的工作,运行 他们一个接一个;

此模型避免了应用程序中的并发冲突;

当你需要做一个长时间的工作时,你应该把工作放到主线程队列中,当消息中需要做你的工作时,你创建一个新线程来做这个长期工作,工作完成后,您从新线程将新消息放入主线程消息队列;

这张图可以帮助你理解运行ning模型