熟悉Android的开发人员应该都知道,实现不同进程之间通信的方法有5种:
1.通过Bundle/Intent传递数据;
2.通过aidl;
3.通过Messenger;
4.通过ContentProvider;
5.通过socket。
其中1,2,3,4的本质都是通过binder机制来实现的,5是通过网络套接字。
这里主要介绍下第三种方法,通过Messenger实现进程通信。
一. Messenger的使用
通过Messenger来实现进程通信是很简单的,省去了编写aidl代码这部分的工作,全部由系统帮我们封装好了。
步骤:
1、服务端
(1)创建一个服务类TestService,继承自Service。
(2)在TestService中创建一个Handler实例,并重写方法handleMessage:
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
//TODO
}
}
(3)在TestService中创建Messenger实例,并传入上面创建的Handler实例
Messenger mMessenger = new Messenger(mHandler); //注意:服务端传入的参数是Handler的引用。
并在onBind方法中调用mM