1、为什么跨进程通信
2、为什么要选binder进行跨进程通信
3、怎样跨进程通信
进程隔离
不同的应用都有各自的进程,进程间的数据是不共享的;
android是基于Linux系统的,将空间分为了用户空间、内核空间;
如果一个用户空间想要访问另一个用户空间,就需要进程间通信;
进程通信的方式
Intent+Bundle
文件共享
Messager
AIDL
管道
Socket
Binder的优势
性能:binder比传统的进程间通信的方式少一次数据传递(映射)
安全:传统的进程通信方式对于通信双方的身份并没有做出严格的验证,只有在上层协议上进行架设;比如Socket通信ip地址是客户端手动填入的,都可以进行伪造;而Binder机制从协议本身就支持对通信双方做身份校检,因而大大提升了安全性
进程间通信流程图
未命名文件.png
知识点:
1、两种类型的service:本地Service和远程Service
2、两种aidl文件:数据、接口
3、手动导包
4、AIDL中除了基本数据类型,其他类型的参数必须标上方向:in、out、inout
5、客户端bindService时,intent隐式调用,除了action,还需setPackage。
6、若服务端中的方法是耗时的,就不能在UI线程中发起远程请求。
死亡代理:linkToDeath、unlinkToDeath.
7、客户端和服务端的AIDL的包结构必须一样。
8、允许多个客户端和服务端同时通信,所以要处理线程同步。
9、权限验证
网友评论