全書分為12章,第1章是Android概述,第2章是工欲善其事、必先利其器,第3章是為什么需要優化,第4章是UI布局優化,第5章是Android的內存系統,第6章是Android的內存優化,第7章是=代碼優化,第8章是性能優化,第9章是系統優化,第10章是優化工具,第11-12章是綜合實例部分,通過2個綜合實例講解了優化大型Androd程序的基本流程。
本書內容的編寫具有以下特色! 。1)結構合理 從用戶的實際需要出發,科學安排知識結構,內容由淺入深,敘述清晰。全書詳細地講解了和Android優化開發有關的源碼,內容循序漸進,由淺入深! 。2)遵循“理論介紹—演示實例—綜合演練”這一主線 為了使廣大讀者徹底弄清楚Android優化的每一個知識點,在講解時依次剖析了基本理論、演示實例分析、綜合實戰演練等內容。遵循了從理論到實踐,實現了實踐教學這一目標! 。3)易學易懂 本書內容條理清晰、語言簡潔,可以幫助讀者快速掌握各個知識點。使讀者既可以按照本書編排的章節順序進行學習,也可以根據自己的需求對某一章節進行針對性的學習! 。4)實用性強 本書徹底摒棄枯燥的理論和簡單的操作,注重實用性和可操作性,通過通俗的語言和細膩的描述,詳細講解了各個知識點的基本知識! 。5)內容全面 本書可稱為“內容*全面的一本Android系統優化開發圖書”之一,無論是開發環境搭建,還是各個常用、常見的網絡系統問題,在本書中都能找到解決問題的方法。
前言
第一篇 基礎知識篇
第1章 Android系統介紹
1.1 智能手機系統介紹
1.1.1 什么是智能手機
1.1.2 主流智能系統的發展現狀
1.2 Android系統的發展現狀
1.2.1 Android系統的誕生和發展現狀
1.2.2 常見的Android設備
1.2.3 Android系統的巨大優勢
1.3 搭建Android應用開發環境
1.3.1 安裝Android SDK的系統要求
1.3.2 安裝JDK
1.3.3 獲取并安裝Eclipse和Android SDK
1.3.4 安裝ADT
1.3.5 設定Android SDK Home
1.3.6 驗證開發環境
1.3.7 創建Android虛擬設備(AVD)
1.3.8 啟動AVD模擬器
1.4 創建**個Android程序
第2章 獲取并編譯Android源碼
2.1 獲取Android源碼
2.1.1 在Linux系統獲取Android源碼
2.1.2 在Windows平臺獲取Android源碼
2.2 分析Android源碼結構
2.3 編譯Android源碼
2.3.1 搭建編譯環境
2.3.2 開始編譯
2.3.3 在模擬器中運行
2.3.4 常見的錯誤分析
2.3.5 實踐演練——兩種編譯Android程序的方法演示
第二篇 核心技術篇
第3章 分析內存系統
3.1 分析Android的進程通信機制
3.1.1 Android的進程間通信(IPC)機制Binder
3.1.2 Binder機制的上下文管理者——Service Manager
3.1.3 Service Manager服務
3.2 匿名共享內存子系統詳解
3.2.1 基礎數據結構
3.2.2 初始化處理
3.2.3 打開匿名共享內存設備文件
3.2.4 內存映射
3.2.5 讀寫操作
3.2.6 鎖定和解鎖
3.2.7 回收內存塊
3.3 C++訪問接口層詳解
3.3.1 接口MemoryHeapBase
3.3.2 接口MemoryBase
3.4 Java訪問接口層詳解
第4章 Android內存優化
4.1 Android內存優化的作用
4.2 查看Android內存和CPU使用情況
4.2.1 利用Android API函數查看內存
4.2.2 直接對Android文件進行解析查詢
4.2.3 通過Runtime類實現
4.2.4 使用DDMS工具獲取
4.2.5 其他方法
4.3 Android系統的內存泄露
4.3.1 什么是內存泄漏
4.3.2 為什么會發生內存泄露
4.3.3 shallow size和retained size
4.3.4 查看Android內存泄露的工具
4.3.5 查看Android內存泄露的方法
4.3.6 Android(Java)編碼時的注意事項
4.4 常見的引起內存泄露的陋習
4.4.1 查詢數據庫時忘記關閉游標
4.4.2 構造Adapter時不習慣使用緩存的convertView
4.4.3 沒有及時釋放對象的引用
4.4.4 不在使用Bitmap對象時調用recycle()釋放內存
4.5 演練解決內存泄露
4.5.1 使用MAT根據heap dump分析Java代碼內存泄漏的根源
4.5.2 演練Android中內存泄露代碼優化及檢測
4.6 Android圖片的內存優化
第5章 UI布局優化
5.1 和布局相關的組件
5.1.1 View視圖組件
5.1.2 ViewGroup容器
5.2 Android中的五種布局方式
5.2.1 線性布局LinearLayout
5.2.2 框架布局FrameLayout
5.2.3 **布局AbsoluteLayout
5.2.4 相對布局RelativeLayout
5.2.5 表格布局TableLayout
5.3 使用標簽優化UI界面
5.3.1 注意事項
5.3.2 具體實現
5.4 優化Bitmap圖片
5.4.1 顯示一副圖片
5.4.2 獲取圖片的寬度和高度
5.5 FrameLayout布局優化
5.5.1 使用減少視圖層級結構
5.5.2 使用重用layout代碼
5.5.3 延遲加載
5.6 使用Android提供的優化工具
5.6.1 Layout Optimization工具
5.6.2 Hierarchy Viewer工具
5.6.3 聯合使用和標簽實現互補
第6章 優化代碼性能
6.1 編寫更高效的Android代碼
6.1.1 避免建立對象
6.1.2 優化方法調用代碼
6.1.3 優化代碼變量
6.1.4 優化代碼過程
6.1.5 提高Cursor查詢數據的性能
6.1.6 編碼中盡量使用ContentProvider共享數據
6.2 Android控件的性能優化
6.2.1 ListView控件的代碼優化
6.2.2 Adapter(適配器)優化
6.2.3 ListView異步加載圖片優化
6.3 優化Android圖形
6.3.1 2D繪圖的基本優化
6.3.2 觸發屏幕圖形觸摸器的優化
6.3.3 SurfaceView 繪圖覆蓋刷新及臟矩形刷新方法
6.4 資源存儲優化
6.4.1 Android文件存儲
6.4.2 Android中的資源存儲
6.4.3 Android資源的類型和命名
6.4.4 Android文件資源(raw/data/asset)的存取
6.4.5 Android對Drawable對象的優化
6.4.6 建議使用Drawable,而不是Bitmap
6.5 加載APK文件和DEX文件
6.5.1 APK文件介紹
6.5.2 DEX文件介紹和優化
6.5.3 Android類動態加載技術實現加密優化
第三篇 Dalvik 虛擬機優化篇
第7章 Dalvik虛擬機垃圾收集機制
7.1 引用計數算法
7.2 Mark Sweep算法
7.3 和垃圾收集算法有關的函數
7.4 垃圾回收的時機
7.5 調試信息
7.6 Dalvik 虛擬機和JVM垃圾收集機制的區別
第8章 Dalvik虛擬機內存優化機制
8.1 sp和wp簡介
8.1.1 sp基礎
8.1.2 wp基礎
8.2 智能指針詳解
8.2.1 智能指針基礎
8.2.2 輕量級指針
8.2.3 強指針
8.2.4 弱指針
第9章 Dalvik虛擬機異常處理
9.1 Java異常處理機制
9.1.1 方法調用棧
9.1.2 Java提供的異常處理類
9.2 Java 虛擬機異常處理機制詳解
9.2.1 Java語言及虛擬機的異常處理機制
9.2.2 COSIX虛擬機異常處理的設計與實現
9.3 分析Dalvik虛擬機異常處理的源碼
9.3.1 初始化虛擬機使用的異常Java類庫
9.3.2 拋出一個線程異常
9.3.3 持續拋出進程
9.3.4 找出異常原因
9.3.5 清除掛起的異常和等待初始化的異常
9.3.6 解決“現在等待”異常
9.3.7 輸出跟蹤當前異常的錯誤信息
9.3.8 搜索和當前異常相匹配的方法
9.3.9 獲取匹配的捕獲塊
9.3.10 進行堆棧跟蹤
9.3.11 生成堆棧跟蹤元素
9.3.12 將內容添加到堆棧跟蹤日志中
9.3.13 將異常日志信息輸出為堆棧跟蹤信息
9.4 常見異常的類型與原因
9.4.1 SQLException:操作數據庫異常類
9.4.2 ClassCastException:數據類型轉換異常
9.4.3 NumberFormatException:字符串轉換為數字類型時拋出的異常
9.5 調用堆棧跟蹤分析異常
9.5.1 解決段錯誤
9.5.2 跟蹤Android Callback調用堆棧
第10章 JIT編譯
10.1 JIT簡介
10.1.1 JIT概述
10.1.2 Java虛擬機主要的優化技術
10.1.3 Dalvik中JIT的實現
10.2 Dalvik虛擬機對JIT的支持
10.3 匯編代碼和改動
10.3.1 匯編部分代碼
10.3.2 對C文件的改動
10.4 Dalvik虛擬機中的JIT源碼
10.4.1 入口文件
10.4.2 核心函數
10.4.3 編譯文件
10.4.4 BasicBlock處理
10.4.5 內存初始化
10.4.6 對JIT源碼的總結
第11章 ART優化之啟動過程
11.1 運行環境的轉換
11.2 運行 app_process 進程
11.3 準備啟動
11.4 創建運行實例
11.5 注冊本地JNI函數
11.6 啟動守護進程
11.7 解析參數
11.8 初始化類、方法和域
第12章 ART優化之執行主程序
12.1 進入main主函數
12.2 查找目標類
12.2.1 函數LookupClass()
12.2.2 函數DefineClass()
12.2.3 函數InsertClass()
12.2.4 函數LinkClass()
12.3 類操作
12.4 實現托管操作
第13章 ART優化之安裝APK準備
13.1 PackageManagerService概述
13.2 主函數main
13.3 調用初始化函數
13.4 創建PackageManagerService服務
13.5 掃描并解析
13.6 保存解析信息
第14章 ART優化之安裝APK應用程序
14.1 Android安裝APK概述
14.2 啟動時安裝
14.3 ART安裝
14.4 實現dex2oat轉換
14.4.1 參數解析
14.4.2 創建oat文件指針
14.4.3 dex2oat 準備工作
14.4.4 提取classes.dex文件
14.4.5 創建oat文件
14.5 APK 文件的轉換
第15章 系統優化
15.1 基本系統優化
15.1.1 刷機重啟
15.1.2 刷內核
15.1.3 精簡內置應用
15.1.4 基本系統優化總結
15.2 進程管理
15.2.1 Android進程跟Windows進程是兩回事
15.2.2 查看當前系統中正在運行的程序
15.2.3 枚舉Android系統的進程、任務和服務的信息
15.2.4 研究Android進程管理器的實現
15.3 將Android軟件從手機內存轉移到存儲卡
15.3.1 **步:準備工作
15.3.2 第二步:存儲卡分區
15.3.3 第三步:將軟件移動到SD卡
15.4 常用的系統優化工具
15.4.1 優化大師
15.4.2 360優化大師