有两个进程分别为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最终实现接收数据。
新闻热点
疑难解答