如果站在四大組件的角度來看,AMS就是Binder中的Server。
AMS全稱是ActivityManagerService,看字面意思是管理Activity的,但其實四大組件都歸它管。估計是Android底層開發人員先寫了ActivityManagerService用來管理Activity,后來寫Service、Receiver、CP的時候發現代碼都差不多,于是就全都用ActivityManagerService,但是卻忘記改名字了——我也是猜的,純屬八卦。
由此而說到了插件化,我記得16年和Lody、張勇、林光亮一起吃夜宵的時候,我當時問了困惑已久的兩個問題:
* 1)App的安裝過程,為什么不把apk解壓縮到本地,這樣讀取圖片就不用每次從apk包中讀取了——這個問題,我們放到PMS那一節再詳細說。
* 2)為什么Hook永遠是在Binder Client端,也就是四大組件這邊,而不是在AMS那一側進行Hook。
這里要說清楚第二個問題。就拿Android剪切板舉例吧。前面說過,這也是個Binder服務。
AMS要負責和所有App的四大組件進行通信,也真夠他忙的。如果在一個App中,在AMS層面把剪切板功能給篡改了,那會導致Android系統所有的剪切板功能被篡改——這就是病毒了,如果是這樣的話,Android系統早就死翹翹了。所以Android系統不允許我們這么做。
我們只能在AMS的另一側,Client端,也就是四大組件這邊做篡改,這樣即使我們把剪切板功能篡改了,也只影響篡改代碼所在的App,在別的App中,剪切板功能還是正常的。
關于AMS我們就說這么多,下面介紹四大組件時,會反復提到四大組件和AMS的跨進程通信。
- 前言
- Android 熱補丁技術——資源的熱修復
- 插件化系列詳解
- Dex分包——MultiDex
- Google官網——配置方法數超過 64K 的應用
- IMOOC熱修復與插件化筆記
- 第1章 class文件與dex文件解析
- Class文件解析
- dex文件解析
- class與dex對比
- 第2章 虛擬機深入講解
- 第3章 ClassLoader原理講解
- 類的加載過程
- ClassLoade源碼分析
- Android中的動態加載
- 第4章 熱修復簡單講解
- 第5章 熱修復AndFix詳解
- 第6章 熱修復Tinker詳解及兩種方式接入
- 第7章 引入熱修復后代碼及版本管理
- 第8章 插件化原理深入講解
- 第9章 使用Small完成插件化
- 第10章 使用Atlas完成插件化
- 第11章 課程整體總結
- DN學院熱修復插件化筆錄
- 插件化
- 熱修復
- Android APP開發應掌握的底層知識
- 概述
- Binder
- AIDL
- AMS
- Activity的啟動和通信原理
- App啟動流程第2篇
- App內部的頁面跳轉
- Context家族史
- Service
- BroadcastReceiver
- ContentProvider
- PMS及App安裝過程