Binder整理

1、IPC: 进程间通讯或者夸进程通信
windows ipc方式:剪贴板、管道、邮槽等等
linux pic方式:管道、信号量、共享内容等等
Android是基于linux的,但是android有自己的特有的ipc方式:binder。
2、进程与线程是什么、有什么关系。
3、Android开启多进程的方式:基于四大组件的android:process属性,:remote代表代表该进程的私有进程,其他的应用组件不可以跑入这个进程,没有冒号代表全局进程,其他进程可以共享这个进程。还有一个开始方式通过jni在native层去fork一个新的进场,这个不细研究了。
uid:这个是应用在安装的时候系统给应用分配的唯一的uid,只有uid相同的才可以共享数据,当两个应用的shareId相同并且签名也相同的话,他们就可以跑在一个进程里面,他们可以访问对方的私有数据例如:共享组件信息,data目录,共享内存等,
应用在创建新的进程时会执行新的application初始化工作,系统会给他分配单独的虚拟机,所以对于一些可修改静态的值,在一个应用的两个进场可能会是不同的值,当然他们内存地址也不是同一个。
4、Serializable、Parcelable 数据传递(intent、网咯、binder)是可序列化的,熟悉两种序列化的优缺点。
5、android 实现夸进程的方式:共享文件、sp、Intent传递数据、Messenger、contentProvider、aidl、socket等等。而Intent传递数据、contentProvider、Messenger、aidl主要用的是binder。
intent、bandle本身是实现Parcelable接口的,并且他们也可以携带参数需要熟悉他们能传递的参数,这些参数通过他们可以实现跨进程通信。
aidl:是快速实现binder的语言,在aidl目录创建aidl接口文件,环境会自动生成实现接口的jave binder类。
实现binder不一定要用aidl语言,他有特定的格式只是让你快速实现
binder,对于binder我们完全可以自己仿照他的binder实现自己写出来。
Messenger:底层是由aidl实现的,可快速实现多对一的串行通信,实现起来比较简单,binder一个Service,在service和Activity都创建Messenger 通讯即可。
contentProvider:底层也是binder来实现的数据通信。
6、Binder连接池:实现方式定义一个获取binder方法(queryBinder(int binderCode))的aidl接口文件,开启的服务直接返回该binder,在由该binder里的获取binder的方法获取我们的各个其他的binder。

Android Binder_第1张图片 binder.png

7、binder使用场景和比较


Android Binder_第2张图片 binder1.png

8,AIDL理解,通信中的几个角色
AIDLIInterface extend android.os.IInterface aidl接口:开发者继承该接口声明自己的业务接口。
Stub extends android.os.Binder implements AIDLIInterface 服务器Binder传输类,服务器bindler要实现的抽象类
Proxy implements AIDLIInterface 客户端Binder传输类,里面封装的服务端IBinder,可作为服务端的在客户端的句柄,通过它来像服务端传输数据。
SSS extend Stub 真正实现AIDLIInterface接口的服务端bindler。

9,bindler通讯数据需要一次拷贝,socket进程通信需要两次拷贝,共享内存无需拷贝用户空间和内核空间(逻辑内存)映射到同一块物理内存。
socket效率低,并且两个应用通信安全性无法保证,应用端通过虚假的pid传输数据安全性无法保证
共享内存直接操纵内存,数据需要同步机制,不好维护,控制复杂
Bindler 为每个APP分配UID 同时支持实名和匿名

binder设计分析https://blog.csdn.net/universus/article/details/6211589

更多相关文章

  1. Android深入浅出系列课程---Lesson3 AAF110427_进程生命周期Proc
  2. Android进程so注入Hook java方法
  3. SSH服务器与Android通信(2)--Android客户端接收数据
  4. 在Android中创建和使用数据库
  5. Android之应用进程模型
  6. Android 使用Vitamio打造自己的万能播放器(4)――本地播放(快捷搜索
  7. HNU_团队项目_Android和数据库对接出现问题总结

随机推荐

  1. 常见CDN 引用
  2. H5建立链接的7种方式
  3. 文件夹变0字节. 不知道怎样找回呢?
  4. 2021苹果app开发者账号申请(踩坑记)
  5. 二维数组排序-搜索-增删改查-多维数组递
  6. 磁盘显示请将磁盘插入驱动器解决方案
  7. Vue-route实现路由
  8. 常用数组函数-创建-删除-键值操作-回调函
  9. 【面试】两个变量进行交替的N种方法
  10. 【已解决】您的要求未能完成。我们暂时未