有两个进程分别为A,B.将A的activity与B的service绑定。
public boolean bindService(Intent service, ServiceConnection conn, int flags) {
throw new RuntimeException(“Stub!”);
}
其中bindService中有三个参数,intent用来从A的activity跳到B的Service;第三个参数一般写BIND_AUTO_CREATE。要说的是第二个参数ServiceConnection。
ServiceConnection作用有通过Messenger的方式设置传的键值对以及设置msg.what的值,最后通过sendMessenger传到另一进程中B。
B的service中通过messenger中的MessengerHandler来处理接收到的信息,通过比较msg.what的数值来获取接收的数据,最终实现跨进程通信。
同时B的Service也可以给A的activity传输返回数据。通过 msg.replyTo,所以就不需要像A->B那样通过bindService来传输数据了,直接通过Message填写所要传输的数据然后通过sendMessage就行了。但A的activity则需要通过Message中的handlerMessenger 来判别msg.what来自B的service最终实现接收数据。
Android中使用Messenger进行跨进程传输
最新推荐文章于 2022-05-22 17:04:32 发布