Android 进程间通信中 Messager 的简单使用

Messenger 是 Android 中一种简单且高效的进程间通信(IPC)机制。它基于 BinderHandler 实现,适用于轻量级的跨进程通信场景。相比 AIDL(Android Interface Definition Language),Messenger 更加简单易用,但功能相对有限。

以下是 Messenger 的详细用法和实现步骤:


1. Messenger 的工作原理

Messenger 的核心思想是通过消息队列在不同进程之间传递消息:

  • 服务端:创建一个 Handler 来处理客户端发送的消息,并通过 MessengerHandler 暴露给客户端。
  • 客户端:通过绑定到服务端的 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