一、Messenger简介
Messenger是基于Message对象进行跨进程通信的,类似于Handler发送消息实现线程间通信一样的用法。
二、Messenger使用
下面写个客户端跨进程发送消息到服务端,服务端接受到立即回复的例子。
1、服务端
实现流程:
- 首先创建一个Handler对象
- 接着创建一个Messenger对象,并把Handler对象以形参传入Messenger中
- 最后通过mMessenger.getBinder得到Binder对象,在onBind方法中返回。
public class MessengerService extends Service {
private static final String TAG = "MessengerService";
public MessengerService() {
}
@Override
public IBinder onBind(Intent intent) {
return mMessenger.getBinder();
}
private MessengerHandler mHandler=new MessengerHandler();
private Messenger mMessenger=new Messenger(mHandler);
private static class MessengerHandler extends Handler{
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
//取出客户端的消息内容
Bundle bundle = msg.getData();
String clientMsg = bundle.getString("client");
Log.i(TAG,"来自客户端的消息:"+clientMsg);
//新建一个Message对象,作为回复客户端的对象
Message message = Message.obtain();
Bundle bundle1 = new Bundle();
bundle1.putString("service","今天就不去了,还有很多东西要学!!");
message.setData(bundle1);
try {
msg.replyTo.send(message);
} catch (RemoteException e) {
e.<