一、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

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

被折叠的 条评论
为什么被折叠?



