Android中使用Messenger进行跨进程传输

本文详细介绍了如何使用ServiceConnection实现两个进程间的通信。具体包括:如何通过bindService绑定Service,利用Messenger进行键值对传递及消息处理,以及如何实现双向数据传输。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有两个进程分别为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最终实现接收数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值