已绑定手机
|
1.Binder是什么?
2. Binder采用怎样的架构设计
3. Linux有现成的PC机制,为什么 Android要采用 Binder作为进程间通信方式?
4. Binder是如何实现的一次通信只拷贝一次内存?
5. binder有这么多优势, native daemon为何采用 socket? zygote为何采用 socket?
6. binder通信过程, transaction too large,该如何破?
7. Binder传输过程,什么时机会释放内存?
8. Binder服务是如何注册到系统的?又是如何查看某个服务的?
9. Binder调用是否为阻塞操作? oneway是否会阻塞?同步与异步 Binder是如何实现的?
10. lin kTodeath的原理是什么? BInder能做这个操作吗?一个 BpBinder可以注册多个死亡回调?
11. linkToDeath/ unlinkToDeath的原理是什么,这个过程是否涉及进程间通信?
12. binderDied是如何触发的?有没有可能进程被杀而不会触发呢?
13.代理端发起 binder请求,并交由服务端正在处理,如果此时代理端进程死亡,服务端的活是否会停止?
14. Native层与java层 binder有什么关系?如果Java层和 Native层分别注册同名的 binder,查询服务该显示哪一个?
15. Binder线程池是如何管理与运作的?什么情况下会 binder线程池占满?一个进程到底可以有多少个 binder线程?
16.调用同一个进程的 binder接口,是否需要走一遍完整的 binder driver流程?
17. binder的使用场景有哪些?使用 binder过程有哪些需要注意的地方?
18.App进程是如何做到天生支持 Binde通信?
19.很多情况下,为什么ANR触发时,app主线程都卡在 binder调用,这是系统的锅,还是app的锅?
20. Binder有没有什么缺点或不足? Binder机制有哪些改进空间?
BINDER安全性
传统PC的接收方无法获得对方进程可靠的UD/PID,从而无法鉴别对方身份
Android在应用程序安装过程便已分配指定的UID,进程的U|D是鉴别进程身份的重要标忐;使用传统IPC只能由用户在数据包里填入UID/P|D;
Bindel通信的身份信息PD/UD,是由Linuⅸ内核在进程通信过程填充,安全可靠。
设计角度
面向对象的设计体验
系统平台级的全方位支持,使用简单
Binder模糊了进程边界,淡化了进程间通信过程,整个系统仿佛运行于同面向对象的程序之中
BC协议
BC协议
协议转换
协议转换
文件下载,请回复
|
|