目 錄
第1章 Java代碼優化 1
1.1 Android如何執行代碼 1
1.2 優化斐波納契數列 4
1.2.1 從遞歸到迭代 4
1.2.2 BigInteger 6
1.3 緩存結果 10
1.4 API等級 12
1.5 數據結構 14
1.6 響應能力 17
1.6.1 推遲初始化 19
1.6.2 StrictMode 19
1.7 SQLite 21
1.7.1 SQLite語句 21
1.7.2 事務 25
1.7.3 查詢 26
1.8 總結 27
第2章 NDK入門 28
2.1 NDK裏有什麼 28
2.2 混閤使用Java和C/C++代碼 31
2.2.1 聲明本地方法 31
2.2.2 實現JNI粘閤層 32
2.2.3 創建Makefile 33
2.2.4 實現本地函數 35
2.2.5 編譯本地庫 36
2.2.6 加載本地庫 37
2.3 Application.mk 37
2.3.1 為(幾乎)所有設備優化 39
2.3.2 支持所有設備 40
2.4 Android.mk 43
2.5 使用C/C++改進性能 45
2.6 本地Acitivity 52
2.6.1 構建缺失的庫 54
2.6.2 替代方案 59
2.7 總結 60
第3章 NDK進階 61
3.1 匯編 61
3.1.1 最大公約數 62
3.1.2 色彩轉換 66
3.1.3 並行計算平均值 70
3.1.4 ARM指令 74
3.1.5 ARM NEON 79
3.1.6 CPU特性 80
3.2 C擴展 81
3.2.1 內置函數 82
3.2.2 嚮量指令 82
3.3 技巧 86
3.3.1 內聯函數 87
3.3.2 循環展開 87
3.3.3 內存預讀取 87
3.3.4 用LDM/STM替換LDR/STD 89
3.4 總結 89
第4章 高效使用內存 90
4.1 說說內存 90
4.2 數據類型 91
4.2.1 值的比較 93
4.2.2 其他算法 95
4.2.3 數組排序 96
4.2.4 定義自己的類 97
4.3 訪問內存 98
4.4 排布數據 100
4.5 垃圾收集 104
4.5.1 內存泄漏 105
4.5.2 引用 106
4.6 API 109
4.7 內存少的時候 110
4.8 總結 111
第5章 多綫程和同步 112
5.1 綫程 112
5.2 AsyncTask 115
5.3 Handler和Looper 118
5.3.1 Handler 118
5.3.2 Looper 120
5.4 數據類型 120
5.5 並發 124
5.6 多核 125
5.6.1 為多核修改算法 126
5.6.2 使用並發緩存 129
5.7 Activity生命周期 131
5.7.1 傳遞信息 132
5.7.2 記住狀態 134
5.8 總結 137
第6章 性能評測和剖析 138
6.1 時間測量 138
6.1.1 System.nanoTime() 139
6.1.2 Debug.threadCpuTimeNanos() 140
6.2 方法調用跟蹤 141
6.2.1 Debug.startMethodTracing() 141
6.2.2 使用Traceview工具 142
6.2.3 DDMS中的Traceview 144
6.2.4 本地方法跟蹤 145
6.3 日誌 147
6.4 總結 148
第7章 延長電池續航時間 150
7.1 電池 150
7.2 禁用廣播接收器 155
7.3 網絡 159
7.3.1 後颱數據 159
7.3.2 數據傳輸 160
7.4 位置 162
7.4.1 注銷監聽器 163
7.4.2 更新頻率 164
7.4.3 多種位置服務 164
7.4.4 篩選定位服務 166
7.4.5 最後已知位置 168
7.5 傳感器 169
7.6 圖形 170
7.7 提醒 171
7.8 WakeLock 173
7.9 總結 175
第8章 圖形 176
8.1 布局優化 176
8.1.1 相對布局 178
8.1.2 閤並布局 181
8.1.3 重用布局 183
8.1.4 ViewStub 184
8.2 布局工具 185
8.2.1 層級視圖 186
8.2.2 layoutopt 186
8.3 OpenGL ES 186
8.3.1 擴展 187
8.3.2 紋理壓縮 189
8.3.3 Mipmap 193
8.3.4 多APK 194
8.3.5 著色 195
8.3.6 場景復雜性 195
8.3.7 消隱 195
8.3.8 渲染模式 195
8.3.9 功耗管理 195
8.4 總結 196
第9章 RenderScript 197
9.1 概覽 197
9.2 Hello World 199
9.3 Hello Rendering 202
9.3.1 創建渲染腳本 202
9.3.2 創建RenderScriptGL Context 203
9.3.3 展開RSSurfaceView 204
9.3.4 設置內容視圖 204
9.4 在腳本中添加變量 205
9.5 HelloCompute 208
9.5.1 Allocation 209
9.5.2 rsForEach 210
9.5.3 性能 213
9.6 自帶的RenderScript API 214
9.6.1 rs_types.rsh 215
9.6.2 rs_core.rsh 217
9.6.3 rs_cl.rsh 219
9.6.4 rs_math.rsh 222
9.6.5 rs_graphics.rsh 223
9.6.6 rs_time.rsh 224
9.6.7 rs_atomic.rsh 225
9.7 RenderScript與NDK對比 225
9.8 總結 226
· · · · · · (
收起)