Android Binder学习趣事

简介: 看Android源码无论如何绕不开Binder,因此我一直对Binder的实现机制有浓厚的兴趣。无奈本人功力不够,所以对此一直没有清晰的认识。看了网上一些分析Binder的文章,基本都是源码分析,我觉得对于Binder这样一种比较复杂的框架,最好不要一开始就进入到源码这么细节的层面,很容易找不到北。我觉得应该先撇开代码,有原理性的介绍,再根据个人需要深入代码去分析。因为没有找到合适的文章,所以我就

看Android源码无论如何绕不开Binder,因此我一直对Binder的实现机制有浓厚的兴趣。无奈本人功力不够,所以对此一直没有清晰的认识。看了网上一些分析Binder的文章,基本都是源码分析,我觉得对于Binder这样一种比较复杂的框架,最好不要一开始就进入到源码这么细节的层面,很容易找不到北。我觉得应该先撇开代码,有原理性的介绍,再根据个人需要深入代码去分析。因为没有找到合适的文章,所以我就想自己来探究,自己来写,我主要想解决以下几个问题:

  1. Binder的历史?
  2. Binder和Linux原有的IPC有什么区别,为什么一定要用Binder?
  3. Binder整体的设计是怎样的?
  4. Binder的跨进程数据传输是怎么实现的?

但是,正当我准备自己动手探究时,却找到一篇很不错的文章Android Binder design and implementation design,一下子把我的问题都回答了,开心,又有点失落。这真是一篇高质量的文章,我想我可以把它翻译成中文,跟大家分享。然而紧接着在里面一个例子中看到"Zhang San"。心里惊呼“难道原文是中文?”。还真找到了,原文在CSDN上Android Bander设计与实现 - 设计篇。这下只有为国人感到自豪了。这篇文章清晰地阐述了Binder的设计实现机制,清晰易懂。

整体的设计已经了然于胸,就可以自己去看代码,亲自触摸里面的实现细节。网上有不少源码分析的文章,最有名的要数老罗的。但是我觉得源码就像一个丰富的宝库,源码分析应该是带着问题,有目的地去分析,不然只会被别人牵着鼻子走,或者迷失其中。就像老罗在系统地分析Android源码前也是看了很多书(见那两年炼就的Android内功修养)。

除了阅读源码,了解Binder的实现细节,我还想了解Linux原有的IPC机制,例如管道,System V IPC,socket是如何设计的,其设计思想和出发点各有什么不同?此处先留着问题,后面再探究总结。

目录
相关文章
|
7月前
|
XML 缓存 Android开发
Android开发,使用kotlin学习多媒体功能(详细)
Android开发,使用kotlin学习多媒体功能(详细)
155 0
|
3月前
|
Java Maven 开发工具
第一个安卓项目 | 中国象棋demo学习
本文是作者关于其第一个安卓项目——中国象棋demo的学习记录,展示了demo的运行结果、爬坑记录以及参考资料,包括解决Android Studio和maven相关问题的方法。
第一个安卓项目 | 中国象棋demo学习
|
2月前
|
存储 Linux Android开发
Android底层:通熟易懂分析binder:1.binder准备工作
本文详细介绍了Android Binder机制的准备工作,包括打开Binder驱动、内存映射(mmap)、启动Binder主线程等内容。通过分析系统调用和进程与驱动层的通信,解释了Binder如何实现进程间通信。文章还探讨了Binder主线程的启动流程及其在进程通信中的作用,最后总结了Binder准备工作的调用时机和重要性。
Android底层:通熟易懂分析binder:1.binder准备工作
|
2月前
|
Web App开发 编解码 视频直播
视频直播技术干货(十二):从入门到放弃,快速学习Android端直播技术
本文详细介绍了Android端直播技术的全貌,涵盖了从实时音视频采集、编码、传输到解码与播放的各个环节。文章还探讨了直播中音视频同步、编解码器选择、传输协议以及直播延迟优化等关键问题。希望本文能为你提供有关Andriod端直播技术的深入理解和实践指导。
50 0
|
7月前
|
监控 Unix 应用服务中间件
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
|
3月前
|
Android开发
Android学习 —— 测试init.rc中的条件触发的处理顺序
Android学习 —— 测试init.rc中的条件触发的处理顺序
|
4月前
|
搜索推荐 Android开发
学习AOSP安卓系统源代码,需要什么样的电脑?不同配置的电脑,其编译时间有多大差距?
本文分享了不同价位电脑配置对于编译AOSP安卓系统源代码的影响,提供了从6000元到更高价位的电脑配置实例,并比较了它们的编译时间,以供学习AOSP源代码时电脑配置选择的参考。
266 0
学习AOSP安卓系统源代码,需要什么样的电脑?不同配置的电脑,其编译时间有多大差距?
|
7月前
|
安全 Java 定位技术
Android 浅度解析:AIDL & Binder (1)
Android 浅度解析:AIDL & Binder (1)
230 0
|
5月前
|
缓存 安全 Java
Android深入Binder拦截问题分析
【7月更文挑战第1天】Android Binder 拦截可实现虚拟化、测试、SDK检测、逆向分析及ROM扩展。通过Java层aidl代理,利用IBinder接口规范来拦截通信。拦截步骤包括:替换Binder服务缓存对象,如ActivityManagerService;代理ServiceManager以控制服务获取。此操作需系统权限,可能涉及安全风险和版本差异,非必要时应谨慎。
|
7月前
|
存储 定位技术 开发工具
Android 开发前的设计,Android之内存泄漏调试学习与总结
Android 开发前的设计,Android之内存泄漏调试学习与总结