跨进程通讯之Binder通讯

本文详细介绍了Android中oneway、in、out、inout关键字的区别,Binder双向通讯机制,linkToDeath的作用,以及Messenger作为简化版AIDL的跨进程通讯方式。通过ServiceConnection示例展示了客户端和服务端如何使用这些技术进行通信。

一、oneway、in、out、inout关键字讲解

1、oneway:异步执行,不管服务器有没有执行完,直接返回

2、in:数据只能由客户端流入服务端

3、out:数据只能由服务端流出到客户端

4、inout:数据可以在服务端与客户端之间双向流通

二、Binder双向通讯思路

客户端跟服务端通讯其实是获取到服务端的IBinder对象,以此来操作服务端,

那么客户端也同理可以传递给服务端一个IBinder对象,以此来实现服务端操作客户端

三、linktodeath作用

客户端跟服务端双向通讯时,当服务端crash了,能够受到回调

DeathRecipient deathHandle = new DeathRecipient() {

@Override

public void binderDied() {

// TODO Auto-generated method stub

Log.i(TAG, "binder is died");

}

};

service.linkToDeath(deathHandle, 0);

四、messenger(原理其实就是基于aidl实现的简化版aidl跨进程通讯)

1、服务端对Messenger的使用

服务端需要实现一个Handler用于处理客户端发来的跨进程通信信息:

其次服务端构造出对应的Messenger:

服务端构造:

Messenger messenger = new Messenger(messengerHandler);

注意这里参数是mess

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值