Talking about Android Message Queue
Android does not implement a global message queue to allow cross-process communication through message like Windows. Actually if you need cross-process communication, the official method in Android is intent. Android only supports in-process communication through message.
I wonder in the feature Android will add supporting cross-process message, because you can see some code snippet(片段) for IMessager in Messager.java and Handler.java. But you have no way to get an instance of IBinder proxy(代理人) object for IMessager.
Looper.java is the class used to run a MessageQueue for a thread. Threads by default do not have a MessageQueue associated with them. To create one, the following code shows a typical example of the implementation of a Looper thread and an initial Handler to communication with the Looper. One thread can have only one Looper instance.
// Example 1:
class LooperThread extends Thread {
public Handler mHandler;
public void run() {
Looper.prepare();
mHandler = new Handler() {
public void handleMessage(Message msg) {
// process incoming messages here
}
};
Looper.loop();
}
}
When a process is created for your JAVA application, its main thread is dedicated to running a message queue that takes care of managing the top-level application objects (activities, intent receivers, etc) and any windows they create, so that you don’t need to create a Looper object for the main thread. Here shows the code snippets in ActivityThread.java which creates the Looper object for the main thread.
public static final void main(String[] args) {
Looper.prepareMainLooper();
ActivityThread thread = new ActivityThread();
thread.attach(false);
Looper.loop();
if (Process.supportsProcesses()) {
throw new RuntimeException("Main thread loop unexpectedly exited");
}
thread.detach();
}
Handler.java allows you to send and process Message and Runnable objects associated with a thread’s MessageQueue. Each Handler instance is associated with a single thread. When you create a new Handler, it is bound to the thread that is creating it – from that point on, it will deliver messages and runnables to that thread’s message queue and execute them as they come out of the message queue.
Scheduling message APIs in Handler can be divided into two types: send and post. The send versions allow you to enqueue a Message object containing a bundle of data that will be processed by the Handler’s handleMessage method (requiring that you implement a subclass of Handler). Please refer to the previous Example 1 as an example. The post versions allow you to enqueue a Runnable object to be called by the message queue when it is received. The following code snippets show an example.
// Example 2:
class MyActivity extends Activity {
Handler mHandler = new Handler();
public void XXX() {
// post a runnable object to run on main message queue
mHandler.post(new Runnable() {
public void run() {
// now it’s run on the thread corresponding to mHandler.
}
});
}
}
分享到:
相关推荐
通过阅读《android MessageQueue1.doc》、《android MessageQueue2.doc》和《android MessageQueue3.doc》,你可以更深入地了解MessageQueue的实现细节、使用技巧以及常见问题的解决方案,这对于提升Android应用的...
在Android开发中,Message Queue是一种重要的机制,用于在不同线程间进行异步通信和任务调度。理解并熟练运用Message Queue、Looper和Handler是构建高效、响应性良好的Android应用的关键。 1. **Message Queue...
本篇文章将详细探讨Android的消息处理机制,特别是Message和MessageQueue这两个核心概念。 #### 二、Android消息处理机制概述 当Android应用启动后,会创建一个主进程,在这个进程中包含了UI主线程。UI主线程负责...
MessageQueue,又称消息队列,是C#中处理异步通信和解耦组件的重要技术。它允许应用程序之间通过消息传递数据,而无需彼此直接交互。下面将详细介绍C#中的MessageQueue以及如何使用它来发送和接收消息。 1. **...
综上所述,Message、MessageQueue、Looper和Handler这四个组件共同构成了Android应用程序中处理消息的基本机制。通过它们之间的相互协作,使得应用程序能够在不同的线程间高效地传递和处理消息,从而实现了复杂的...
在Android系统中,Handler、Looper和MessageQueue是实现线程间通信的核心组件,它们共同构建了一个消息处理机制。本文将深入解析这三者的源码,帮助你理解它们的工作原理,并教你如何手写一套自己的Handler系统。 ...
在Android开发中,Message Queue是实现线程间通信和异步处理的重要机制。本文将深入探讨Message Queue在Android系统中的作用、使用方式及其关联组件,如Looper和Handler。 1. **Message Queue的角色** - 每个...
在Android操作系统中,MessageQueue是实现线程间通信和异步处理的核心组件。它与Handler、Looper紧密协作,构成了Android消息传递机制的基础。本压缩包文件"android_os_MessageQueue.rar_android"显然关注的是这一...
Talking about Android Message Queue.pdf Manually update settings in command line.pdf Android build system.pdf Bluetooth.pdf Audio.pdf Android Media Scanner Process.pdf Talking about Android process....
在Android系统中,MessageQueue和Looper是两个非常关键的组件,它们构成了消息处理机制的核心,尤其是在UI线程中。理解并有效地使用它们对于编写高效、响应迅速的Android应用至关重要。 `Looper`是Android中的一个...
【Android 线程间通信:Handler、Looper 和 MessageQueue 深度解析】 在 Android 应用开发中,为了保证界面的流畅性,我们通常需要将耗时操作放在非 UI 线程中执行,然后通过某种机制将结果传递回 UI 线程进行界面...
一直以来,觉得MessageQueue应该是Java层的抽象,然而事实上MessageQueue的主要部分在Native层中。 自己对MessageQueue在Native层的工作不太熟悉,借此机会分析一下。 一、MessageQueue的创建 当需要使用Looper时...
MessageQueue实战MessageQueue实战MessageQueue实战MessageQueue实战MessageQueue实战MessageQueue实战MessageQueue实战MessageQueue实战MessageQueue实战MessageQueue实战
在Android系统中,线程(Thread)、Looper、Handler、Message以及MessageQueue和MessagePool是实现异步消息处理机制的关键组件,它们共同构建了一个高效的事件驱动模型。这些组件的关系紧密,协同工作,使得Android...
**MSMQ(Message Queue,消息队列)是微软提供的一种可靠的消息传递机制,它允许应用程序在不同的时间点发送和接收消息,即使发送方和接收方不在同一时间在线也能正常工作。在C#中,我们可以利用.NET框架提供的...
### Android之Looper、MessageQueue、Handler与消息循环详解 #### 一、概述 在Android开发过程中,消息处理机制是至关重要的部分,它涉及到应用程序如何管理、传递和响应各种事件。本篇文章将深入探讨Android中...
【Android - 消息队列(Message Queue)详解】 在Android开发中,消息队列扮演着至关重要的角色,它是线程间通信的核心机制之一。理解并掌握消息队列的运作方式,对于编写高效、响应迅速的Android应用至关重要。 1...
进程间通信之消息队列 ( message queue ) 消息队列是消息的链表,具有特定的格式,并由消息队列标识符标识. 七种进程间通信方式: 一.无名管道( pipe ) 二.有名管道( fifo ) 三.共享内存 ( shared memory ) 四....