Messenger
是 Android 中一种简单且高效的进程间通信(IPC)机制。它基于 Binder
和 Handler
实现,适用于轻量级的跨进程通信场景。相比 AIDL(Android Interface Definition Language),Messenger
更加简单易用,但功能相对有限。
以下是 Messenger
的详细用法和实现步骤:
1. Messenger 的工作原理
Messenger
的核心思想是通过消息队列在不同进程之间传递消息:
- 服务端:创建一个
Handler
来处理客户端发送的消息,并通过Messenger
将Handler
暴露给客户端。 - 客户端:通过绑定到服务端的
Service
,获取服务端的Messenger
对象,并使用它发送消息。 - 消息格式:所有消息都封装在
Message
对象中,支持携带简单的数据(如整数、字符串等)或Bundle
。
2. 使用 Messenger 的步骤
(1) 服务端实现
服务端需要创建一个 Service
,并在其中定义一个 Handler
来处理客户端发送的消息。
示例代码:
import android.app.Service;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.Messenger;
import android.util.Log;
public class MessengerService extends Service {
private static final String TAG = "MessengerService";
// 定义 Handler 处理客户端消息
private final Handler handler = new Handler(msg -> {
Log.d(TAG, "Received message from client: " + msg.what);
// 解析消息内容
Bundle data = msg.getData();
if (data != null) {
String clientMessage = data.getString("key");
Log.d(TAG, "Client message: " + c