原创 插件化(二)-dex文件合併 一、加載插件類

Android知識總結 一、加載插件類 那我們如何使用類加載器去加載一個類呢? 非常的簡單,例如:我們有一個apk文件,路徑是 apkPath,然後裏面有個類 com.enjoy.plugin.Test,那麼我們可以通過如下方式去加載 Te

原创 Java進程鼻祖-zygote 一、啓動zygote進程 二、執行app_main.cpp中的main方法 三、啓動 JVM 虛擬機 四、註冊JNI 五、啓動 zygote(在Java層) 五、總結

Android知識總結 一、啓動zygote進程 zygote是由init進程通過解析 init.zygote.rc 文件而創建的,zygote所對應的可執行程序 app_process,所對應的源文件是 app_main.cpp ,進程

原创 Service 出現ANR的原因 一、ANR出現原因 二、Service ANR 源碼分析

Android知識總結 一、ANR出現原因 Android 系統中, ActivityManagerService( 簡稱 AMS)和WindowManagerService( 簡 稱 WMS)會檢測App的響應時間,如果App在特定時間無

原创 綁定Application

Android知識總結 在AMS的 attachApplicationLocked 方法中發送thread.bindApplication(...) 到AvtivityThread中 private class Applicatio

原创 dex文件 一、APK 的結構 二、加密方式 三、Dex格式解析 四、增量更新

Android知識總結 一、APK 的結構 文件 META-INF :簽名文件 res:資源文件 二、加密方式   對稱加密: 加密和解密的祕鑰使用的是同一個 例如:DES、3DES、Blowfish、IDEA、RC4、

原创 LruCache 一、簡介 二、代碼分析 三、總結

Android知識總結 一、簡介 LruCache(Least Recently Used)算法的核心思想就是最近最少使用算法。他在算法的內部維護了一個LinkHashMap的鏈表,LinkedHashMap 是由數組+雙向鏈表的數據結構來

原创 WMS(三)-刪除Window 一、前言 二、源碼分析

Android知識總結 一、前言 Window的刪除過程,本文中從WindowManagerImpl開始講起,主要做了四個事情如圖右所示。 二、源碼分析 1、刪除窗口視圖 public final class ActivityThrea

原创 策略模式 一、UML類圖 二、實現 三、優點 四、 缺點 五、Android中的源碼分析

Android知識總結 一、UML類圖 策略模式定義了一系列算法,並將每個算法封裝起來,使他們可以相互替換,且算法的變化不會影響到使用算法的客戶。需要設計一個接口,爲一系列實現類提供統一的方法,多個實現類實現該接口,設計一個抽象類(可有可無

原创 Hashset 一、參數和構造方法 二、其他方法 三、總結

Android知識總結 一、參數和構造方法 public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Seria

原创 插件化(三)-啓動Activity 一、啓動插件的四大組件 二、HOOK 點的選擇 三、源碼

Android知識總結 一、啓動插件的四大組件 1.1、宿主啓動插件的Activity Activity 是需要在清單文件中註冊的,顯然,插件的 Activity 沒有在宿主的清單文件中註冊,那我們如何來啓動它呢? 這裏我們就需要使用 Ho

原创 HashMap 一、前言 二、HashMap基礎 三、put 元素 四、轉換紅黑樹 五、HashMap擴容機制 六、獲取元素 (get) 七、移除元素 (remove) 八、初始化

Android知識總結 一、前言 隨着JDK(Java Developmet Kit)版本的更新,JDK1.8對HashMap底層的實現進行了優化,例如引入紅黑樹的數據結構和擴容的優化等。 HashMap:它根據鍵的hashCode值存儲

原创 啓動速度優化 一、啓動流程 二、啓動狀態 三、啓動耗時統計 3.3、啓動耗時統計 四、CPU Profile 三、StrictMode 六、冷啓動白屏問題 七、總結

Android知識總結 一、啓動流程 ①、點擊桌面App圖標,Launcher進程採用Binder IPC向system_server進程發起startActivity請求; ②、system_server進程接收到請求後,向zygot

原创 DataBinding(二) 一、set 解析 二、綁定 Lifecycle

Android知識總結 一、set 解析 public void setUser(@Nullable com.example.databindingdemo_20210117.User User) { // 更新註冊 updateReg

原创 WorkManager 一、背景 二、初始化源碼 三、非約束條件任務的執行源碼 四、有約束條件任務的執行源碼

Android知識總結 一、背景 1.1、特點 保證用戶的任務一定會執行 記錄更新每一個任務的信息/狀態【Room數據庫的更新】,手機重啓,APP被殺掉 都一定會執行,因爲同學們要記住一句話:Google說WorkManager是保證你

原创 Navigation(二) 一、使用navigation角度上分析源碼

Android知識總結 一、使用navigation角度上分析源碼 1、Fragment override fun onViewCreated(view: View, savedInstanceState: Bundle?) { s