Open MaosanDao opened 5 years ago
Binder学习指南(已读)
读后感:
Binder的通信模型大体角色分为4个: Client、Server、ServiceManager、Binder驱动。如下图:
通信的机制如下图:
关于AIDL的:
一个需要跨进程传递的对象一定继承自IBinder,如果是Binder本地对象,那么一定继承Binder实现IInterface,如果是代理对象,那么就实现了IInterface并持有了IBinder引用;
个人理解:
在实际使用binder的机制中,client和server是不固定的,但是它们有固定的通信模式,即上所述: Client通过binder驱动拿到持有server的object的远程代理,通过这个代理将一些关键数据通过binder驱动的作用,将数据整理,让binder驱动通过查找servicemanaber,去调用真正的server的方法。最终,再通过binder驱动,将结果返回为client端。
今日已读到:
写给Android App开发人员看的Android底层知识(3)
读后感:
关于App的整个启动过程,一般可以分为七个大的阶段:
首先,从Launcher点击图标开始进行,直到启动到App的固定界面为止。其中,包括了很多IPC的通信机制,比如Launcher进程和App进程之间的通信。以及AMS在从中起到的中转作用。
大体七个步骤的图示:
今日已读:
写给Android App开发人员看的Android底层知识(6)
读后感:
1.App内部启动Activity的流程 2.Context家族史 3.Service内部启动流程 4.BroadCastReceiver的内部启动流程
其实四大组件的各自启动和相互交互,都是通过AMS和Binder IPC来进行通信的。无非是在Binder机制里的Client和Server之间的转换以及代理对象和本地Binder对象之间的交互。
其中关于Service则是,通过Bind和Start的方式进行的启动解刨,其内部机制,仍和Binder息息相关。
以下是今日总结的文章:
今日已读: 剩下的Android App开发应知道的底层原理的剩下部分文章:
写给Android App开发人员看的Android底层知识(8)
读后感:
其中包括了ContentProvider和PMS相关的东西,博主都是很简单的归纳了一些图表。但是他们之间的相同点便是都是通过Binder和AMS来进行的通信,所以整个系列文章,最重要的便是理解Android Binder IPC的相关知识点。
Binder相关:
写给 Android 应用工程师的 Binder 原理剖析(已读一遍) Binder学习指南(已读一遍)