MaosanDao / AndroidNote

日常整理汇总、学习、进阶的一份Android知识速查表,仍在不断完善中。
2 stars 0 forks source link

【好文章,反复阅读】需要阅读的文章列表清单,包括已读和未读 #19

Open MaosanDao opened 5 years ago

MaosanDao commented 5 years ago

Binder相关:

写给 Android 应用工程师的 Binder 原理剖析(已读一遍) Binder学习指南(已读一遍)

MaosanDao commented 5 years ago

写给Android App开发人员的Android底层知识系列:

点击开始(第一遍,读到第六章)

MaosanDao commented 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端。

MaosanDao commented 5 years ago

今日已读到:

写给Android App开发人员看的Android底层知识(3)


读后感:

关于App的整个启动过程,一般可以分为七个大的阶段:

首先,从Launcher点击图标开始进行,直到启动到App的固定界面为止。其中,包括了很多IPC的通信机制,比如Launcher进程和App进程之间的通信。以及AMS在从中起到的中转作用。


大体七个步骤的图示:

MaosanDao commented 5 years ago

今日已读:

写给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 BroadcastReceiver内部启动原理分析

Android 内部的页面跳转

Android Context家族史

Android Service的启动流程原理分析

MaosanDao commented 5 years ago

今日已读: 剩下的Android App开发应知道的底层原理的剩下部分文章:

写给Android App开发人员看的Android底层知识(8)


读后感:

其中包括了ContentProvider和PMS相关的东西,博主都是很简单的归纳了一些图表。但是他们之间的相同点便是都是通过Binder和AMS来进行的通信,所以整个系列文章,最重要的便是理解Android Binder IPC的相关知识点。