第1章  Android係統架構  1
         1.1  Android係統架構  1
         1.2  Android係統源碼目錄  4
         1.2.1  整體結構  4
         1.2.2  應用層部分  5
         1.2.3  應用框架層部分  6
         1.2.4  C/C++程序庫部分  6
         1.3  源碼閱讀  7
         1.3.1  在綫閱讀  7
         1.3.2  使用Source Insight  9
         1.4  本章小結  12
         第2章  Android係統啓動  13
         2.1  init進程啓動過程  13
         2.1.1  引入init進程  13
         2.1.2  init進程的入口函數  14
         2.1.3  解析init.rc  17
         2.1.4  解析Service類型語句  19
         2.1.5  init啓動Zygote  20
         2.1.6  屬性服務  23
         2.1.7  init進程啓動總結  27
         2.2  Zygote進程啓動過程  27
         2.2.1  Zygote概述  28
         2.2.2  Zygote啓動腳本  28
         2.2.3  Zygote進程啓動過程介紹  30
         2.2.4  Zygote進程啓動總結  38
         2.3  SystemServer處理過程  39
         2.3.1  Zygote處理SystemServer進程  39
         2.3.2  解析SystemServer進程  44
         2.3.3  SystemServer進程總結  48
         2.4  Launcher啓動過程  48
         2.4.1  Launcher概述  48
         2.4.2  Launcher啓動過程介紹  49
         2.4.3  Launcher中應用圖標顯示過程  54
         2.5  Android係統啓動流程  59
         2.6  本章小結  60
         第3章  應用程序進程啓動過程  61
         3.1  應用程序進程簡介  61
         3.2  應用程序進程啓動過程介紹  62
         3.2.1  AMS發送啓動應用程序進程請求  62
         3.2.2  Zygote接收請求並創建應用程序進程  68
         3.3  Binder綫程池啓動過程  75
         3.4  消息循環創建過程  78
         3.5  本章小結  80
         第4章  四大組件的工作過程  81
         4.1  根Activity的啓動過程  82
         4.1.1  Launcher請求AMS過程  82
         4.1.2  AMS到ApplicationThread的調用過程  85
         4.1.3  ActivityThread啓動Activity的過程  94
         4.1.4  根Activity啓動過程中涉及的進程  99
         4.2  Service的啓動過程  101
         4.2.1  ContextImpl到AMS的調用過程  101
         4.2.2  ActivityThread啓動Service  103
         4.3  Service的綁定過程  110
         4.3.1  ContextImpl到AMS的調用過程  111
         4.3.2  Service的綁定過程  112
         4.4  廣播的注冊、發送和接收過程  122
         4.4.1  廣播的注冊過程  122
         4.4.2  廣播的發送和接收過程  127
         4.5  Content Provider的啓動過程  137
         4.5.1  query方法到AMS的調用過程  137
         4.5.2  AMS啓動Content Provider的過程  143
         4.6  本章小結  148
         第5章  理解上下文Context  149
         5.1  Context的關聯類  149
         5.2  Application Context的創建過程  151
         5.3  Application Context的獲取過程  156
         5.4  Activity的Context創建過程  156
         5.5  Service的Context創建過程  161
         5.6  本章小結  163
         第6章  理解ActivityManagerService  164
         6.1  AMS傢族  164
         6.1.1  Android 7.0的AMS傢族  164
         6.1.2  Android 8.0的AMS傢族  170
         6.2  AMS的啓動過程  171
         6.3  AMS與應用程序進程  174
         6.4  AMS重要的數據結構  176
         6.4.1  解析ActivityRecord  177
         6.4.2  解析TaskRecord  177
         6.4.3  解析ActivityStack  178
         6.5  Activity棧管理  181
         6.5.1  Activity任務棧模型  181
         6.5.2  Launch Mode  182
         6.5.3  Intent的FLAG  182
         6.5.4  taskAffinity  185
         6.6  本章小結  186
         第7章  理解WindowManager  187
         7.1  Window、WindowManager和WMS  187
         7.2  WindowManager的關聯類  188
         7.3  Window的屬性  193
         7.3.1  Window的類型和顯示次序  193
         7.3.2  Window的標誌  195
         7.3.3  軟鍵盤相關模式  196
         7.4  Window的操作  196
         7.4.1  係統窗口的添加過程  197
         7.4.2  Activity的添加過程  202
         7.4.3  Window的更新過程  203
         7.5  本章小結  206
         第8章  理解WindowManagerService  207
         8.1  WMS的職責  207
         8.2  WMS的創建過程  209
         8.3  WMS的重要成員  217
         8.4  Window的添加過程(WMS處理部分)  219
         8.5  Window的刪除過程  225
         8.6  本章小結  230
         第9章  JNI原理  231
         9.1  係統源碼中的JNI  232
         9.2  MediaRecorder框架中的JNI  233
         9.2.1  Java Framework層的MediaRecorder  233
         9.2.2  JNI層的MediaRecorder  234
         9.2.3  Native方法注冊  235
         9.3  數據類型的轉換  239
         9.3.1  基本數據類型的轉換  240
         9.3.2  引用數據類型的轉換  240
         9.4  方法簽名  242
         9.5  解析JNIEnv  244
         9.5.1  jfieldID和jmethodID  245
         9.5.2  使用jfieldID和jmethodID  247
         9.6  引用類型  249
         9.6.1  本地引用  249
         9.6.2  全局引用  249
         9.6.3  弱全局引用  250
         9.7  本章小結  251
         第10章  Java虛擬機  252
         10.1  概述  252
         10.1.1  Java虛擬機傢族  253
         10.1.2  Java虛擬機執行流程  253
         10.2  Java虛擬機結構  254
         10.2.1  Class文件格式  255
         10.2.2  類的生命周期  256
         10.2.3  類加載子係統  257
         10.2.4  運行時數據區域  258
         10.3  對象的創建  260
         10.4  對象的堆內存布局  262
         10.5  oop-klass模型  263
         10.6  垃圾標記算法  266
         10.6.1  Java中的引用  266
         10.6.2  引用計數算法  267
         10.6.3  根搜索算法  269
         10.7  Java對象在虛擬機中的生命周期  270
         10.8  垃圾收集算法  271
         10.8.1  標記—清除算法  271
         10.8.2  復製算法  272
         10.8.3  標記—壓縮算法  273
         10.8.4  分代收集算法  274
         10.9  本章小結  275
         第11章  Dalvik和ART  276
         11.1  Dalvik虛擬機  276
         11.1.1  DVM與JVM的區彆  276
         11.1.2  DVM架構  278
         11.1.3  DVM的運行時堆  280
         11.1.4  DVM的GC日誌  280
         11.2  ART虛擬機  281
         11.2.1  ART與DVM的區彆  281
         11.2.2  ART的運行時堆  282
         11.2.3  ART的GC日誌  283
         11.3  DVM和ART的誕生  285
         11.4  本章小結  288
         第12章  理解ClassLoader  289
         12.1  Java中的ClassLoader  289
         12.1.1  ClassLoader的類型  289
         12.1.2  ClassLoader的繼承關係  291
         12.1.3  雙親委托模式  292
         12.1.4  自定義ClassLoader  295
         12.2  Android中的ClassLoader  298
         12.2.1  ClassLoader的類型  298
         12.2.2  ClassLoader的繼承關係  300
         12.2.3  ClassLoader的加載過程  302
         12.2.4  BootClassLoader的創建  306
         12.2.5  PathClassLoader的創建  309
         12.3  本章小結  311
         第13章  熱修復原理  312
         13.1  熱修復的産生  312
         13.2  熱修復框架的種類和對比  313
         13.3  資源修復  314
         13.3.1  Instant Run概述  314
         13.3.2  Instant Run的資源修復  315
         13.4  代碼修復  318
         13.4.1  類加載方案  319
         13.4.2  底層替換方案  321
         13.4.3  Instant Run方案  322
         13.5  動態鏈接庫的修復  323
         13.5.1  System的load和loadLibarary方法  323
         13.5.2  nativeLoad方法分析  327
         13.6  本章小結  333
         第14章  Hook技術  334
         14.1  Hook技術概述  334
         14.2  Hook技術分類  336
         14.3  代理模式  336
         14.3.1  代理模式簡單實現  337
         14.3.2  動態代理的簡單實現  338
         14.4  Hook startActivity方法  339
         14.4.1  Hook Activity的startActivity方法  340
         14.4.2  Hook Context的startActivity方法  343
         14.4.3  Hook startActivity總結  344
         14.5  本章小結  345
         第15章  插件化原理  346
         15.1  動態加載技術  346
         15.2  插件化的産生  347
         15.2.1  應用開發的痛點和瓶頸  347
         15.2.2  插件化思想  348
         15.2.3  插件化定義  350
         15.3  插件化框架對比  351
         15.4  Activity插件化  352
         15.4.1  Activity的啓動過程迴顧  352
         15.4.2  Hook IActivityManager方案實現  354
         15.4.3  Hook Instrumentation方案實現  364
         15.4.4  總結  367
         15.5  Service插件化  368
         15.5.1  插件化方麵Service與Activity的不同  368
         15.5.2  代理分發實現  370
         15.6  ContentProvider插件化  376
         15.6.1  ContentProvider的啓動過程迴顧  376
         15.6.2  VirtualApk的實現  377
         15.7  BroadcastReceiver的插件化  385
         15.7.1  廣播插件化思路  386
         15.7.2  VirtualApk的實現  386
         15.8  資源的插件化  387
         15.8.1  係統資源加載  387
         15.8.2  VirtualApk實現  389
         15.9  so的插件化  390
         15.10  本章小結  393
         第16章  繪製優化  394
         16.1  繪製性能分析  394
         16.1.1  繪製原理  395
         16.1.2  Profile GPU Rendering  396
         16.1.3  Systrace  398
         16.1.4  Traceview  404
         16.2  布局優化  407
         16.2.1  布局優化工具  407
         16.2.2  布局優化方法  411
         16.2.3  避免GPU過度繪製  419
         16.3  本章小結  420
         第17章  內存優化  421
         17.1  避免可控的內存泄漏  421
         17.1.1  什麼是內存泄漏  421
         17.1.2  內存泄漏的場景  422
         17.2  Memory Monitor  428
         17.2.1  使用Memory Monitor  429
         17.2.2  大內存申請與GC  430
         17.2.3  內存抖動  430
         17.3  Allocation Tracker  430
         17.3.1  使用Allocation Tracker  431
         17.3.2  alloc文件分析  431
         17.4  Heap Dump  434
         17.4.1  使用Heap Dump  434
         17.4.2  檢測內存泄漏  436
         17.5  內存分析工具MAT  438
         17.5.1  生成hprof文件  438
         17.5.2  MAT分析hprof文件  440
         17.6  LeakCanary  448
         17.6.1  使用LeakCanary  449
         17.6.2  LeakCanary應用舉例  449
         17.7  本章小結  453
      · · · · · ·     (
收起)