Android開發進階:從小工到專家

Android開發進階:從小工到專家

《Android開發進階:從小工到專家》是2018年7月人民郵電出版社出版的圖書,作者是何紅輝。

基本介紹

  • 中文名:Android開發進階:從小工到專家
  • 作者:何紅輝
  • 出版時間:2018年7月
  • 出版社人民郵電出版社
  • 頁數:378 頁
  • ISBN:9787115415912
  • 定價:69 元
  • 開本:小16開
  • 裝幀:平裝
內容簡介,圖書目錄,

內容簡介

本書是一本專門介紹Android開發的圖書。書中首先對Android開發的核心知識點進行深入講解,然後介紹單元測試、代碼規範、版本控制、重構、架構等重要的知識,使得讀者在深入掌握技術的同時也幫助他們開闊眼界,且能夠以更專業的方式設計套用軟體,完成從只會實現功能的初級程式設計師到軟體工程師、設計師的轉變。
本書的主要內容為:構成Android系統基石的四大組件、創造出豐富多彩的UI設計的控制項、保證App流暢的多執行緒開發、必知必會的HTTP網路請求套用、數據存儲的核心SQLite資料庫、讓程式的性能最佳化、讓程式更整潔的代碼規範、管理程式的好幫手Git版本控制,以及需要掌握的高 級技術,如單元測試、六大原則與設計模式、重構和綜合實戰等。
本書適合Android開發初學者、程式設計師學習,也適合作為大中專院校相關專業的師生用書和培訓學校的教材。

圖書目錄

第 1章 Android的構成基石—四大組件 1
1.1 Activity 1
1.1.1 Activity的構成 3
1.1.2 Activity的4種啟動模式 5
1.1.3 FragmentActivity與Fragment 7
1.2 Service與AIDL 8
1.2.1 普通Service 8
1.2.2 IntentService 9
1.2.3 運行在前台的Service 10
1.2.4 AIDL(Android接口描述語言) 11
1.3 Broadcast(廣播) 17
1.3.1 普通廣播 17
1.3.2 有序廣播 18
1.3.3 本地廣播 19
1.3.4 sticky廣播 19
1.4 ContentProvider(外共享數據) 19
1.5 小結 26
第 2章 創造出豐富多彩的UI—
View與動畫 27
2.1 重要的View控制項 27
2.1.1 ListView與GridView 27
2.1.2 數據展示更好的實現——
RecyclerView 32
2.1.3 讓頁面顯示更流暢——ViewPager 33
2.2 必須掌握的最重要的技能—
2.2.1 最為自由的一種實現——自定義View 36
2.2.2 View的尺寸測量 38
2.2.3 Canvas與Paint(畫布與畫筆) 42
2.2.4 自定義ViewGroup 45
2.3 Scroller的使用 46
2.4 讓套用更精彩—動畫 56
2.4.1 幀動畫 57
2.4.2 補間動畫 58
2.4.3 屬性動畫 60
2.4.3.1 屬性動畫的核心類——
ValueAnimator 60
2.4.3.2 對任意屬性進行動畫操作——
Object Animator 61
2.4.3.3 實現豐富多彩的動畫效果——
AnimatorSet 62
2.4.3.4 動畫執行時間——TypeEvaluator與TimeInterpolator 63
2.5 小結 66
第3章 保證App流暢的關鍵因素—
多執行緒 67
3.1 Android中的訊息機制 67
3.1.1 處理訊息的手段——Handler、Looper與MessageQueue 67
3.1.2 在子執行緒中創建Handler為何
會拋出異常 72
3.2 Android中的多執行緒 73
3.2.1 多執行緒的實現——Thread和Runnable 73
3.2.2 執行緒的wait、sleep、join和
yield 74
3.2.3 與多執行緒相關的方法——Callable、Future和FutureTask 78
3.2.4 構建伺服器應用程式的有效
方法——執行緒池 81
3.2.4.1 啟動指定數量的執行緒——
ThreadPoolExecutor 82
3.2.4.2 定時執行一些任務——Scheduled ThreadPoolExecutor 85
3.2.4.3 執行緒池的使用準則 86
3.2.5 同步集合 87
3.2.5.1 程式中的最佳化策略——
CopyOnWriteArrayList 87
3.2.5.2 提高並發效率——
ConcurrentHashMap 88
3.2.5.3 有效的方法——
BlockingQueue 88
3.2.6 同步鎖 89
3.2.6.1 同步機制關鍵字——
synchronized 89
3.2.6.2 顯示鎖—— ReentrantLock與
Condition 90
3.2.6.3 信號量Semaphore 93
3.2.6.4 循環柵欄CyclicBarrier 94
3.2.6.5 閉鎖CountDownLatch 95
3.2.7 創建異步任務更簡單——
AysncTask的原理 97
3.2.7.1 AsyncTask的實現基本原理 97
3.2.7.2 實現一個簡單的AsyncTask 105
3.3 小結 108
第4章 HTTP網路請求 109
4.1 HTTP網路請求原理 109
4.1.1 HTTP的請求方式 110
4.1.1.1 GET請求 110
4.1.1.2 POST請求 110
4.1.1.3 PUT請求 111
4.1.1.4 DELETE請求 111
4.1.1.5 HEAD請求 112
4.1.1.6 TRACE請求 112
4.1.1.7 OPTIONS請求 113
4.1.2 HTTP報文格式解析 113
4.1.2.1 回響報文 116
4.1.2.2 常見的請求頭部 117
4.1.3 簡單模擬HTTP伺服器 117
4.2 Android中執行網路請求 126
4.2.1 全面支持HTTP協定——
HttpClient 126
4.2.2 最佳選擇——HttpURLConnection 128
4.3 網路框架的設計與實現 130
4.3.1 SimpleNet的基本架構 130
4.3.2 Request類 131
4.3.3 Response類 135
4.3.4 請求佇列 136
4.3.5 NetworkExecutor網路執行器 137
4.3.6 執行網路請求的接口——
HttpStack 139
4.3.7 將請求的回調執行到UI執行緒——
ResponseDelivery 142
4.3.8 手動實現檔案上傳 144
4.3.8.1 自定義實現MultipartEntity 144
4.3.8.2 SimpleNet中實現檔案上傳 149
4.4 小結 151
第5章 獨特高效的數據存儲—SQLite
資料庫 152
5.1 SQLite3的基本介紹 152
5.1.1 SQLite前端解析系統 153
5.1.2 SQLite後端引擎 154
5.2 SQLite中的SQL語句 154
5.2.1 創建資料庫 154
5.2.2 創建表 154
5.2.3 插入數據 159
5.2.4 select語句 161
5.2.5 update語句 168
5.2.6 delete語句 169
5.2.7 修改表 169
5.2.8 創建索引 170
5.2.9 創建視圖 171
5.2.10 創建觸發器 171
5.2.11 drop命令 172
5.3 Android中的資料庫開發 173
5.3.1 資料庫基本類型與接口 173
5.3.2 Android資料庫使用示例 177
5.3.3 資料庫升級 181
5.3.4 Android中資料庫的異步操作 181
5.4 資料庫框架ActiveAndroid的使用與
基本原理 184
5.4.1 使用ActiveAndroid 184
5.4.2 資料庫升級 188
5.4.3 基本原理 189
5.5 小結 196
第6章 讓程式更優 秀的技術—性能
最佳化 197
6.1 布局最佳化 197
6.1.1 include布局 197
6.1.2 merge標籤 201
6.1.3 ViewStub視圖 204
6.1.4 減少視圖樹層級 209
6.2 記憶體最佳化 211
6.3 記憶體泄漏 216
6.3.1 使用 Memory Monitor 216
6.3.2 記憶體泄漏檢測利器——
LeakCanary 218
6.4 性能最佳化 222
6.4.1 過度繪製 222
6.4.2 Android 圖形渲染 223
6.4.3 數據採集和分析工具——
TraceView 227
6.5 小結 231
第7章 裝點程式“門面”—代碼規範 232
7.1 代碼規範的第 一個重點—排版 232
7.1.1 代碼縮進 232
7.1.2 長句分割 233
7.1.3 一句一行 233
7.1.4 大括弧 233
7.1.5 空行分隔 234
7.1.6 空行分隔 234
7.1.7 數據與函式的排布 235
7.1.8 修飾詞順序 235
7.2 注釋 235
7.2.1 類注釋 236
7.2.2 注釋的位置 236
7.2.3 函式的注釋 237
7.2.4 異常的注釋 237
7.3 命名 238
7.3.1 包的命名 238
7.3.2 類與接口的命名 238
7.3.3 函式命名 238
7.3.4 setter和getter 238
7.3.5 欄位名 239
7.3.6 欄位名 239
7.4 編碼建議 239
7.4.1 beak語句 239
7.4.2 覆寫時添加@Override 239
7.4.3 指定集合中的元素類型 240
7.4.4 顯示指明操作符優先權 240
7.5 小結 240
第8章 讓不斷升級的系統更好管理—
Git版本控制 241
8.1 Git起源 243
8.2 Git基本原理 243
8.2.1 直接記錄快照,而非差異
比較 243
8.2.2 近乎所有操作都是本地執行 244
8.2.3 時刻保持數據完整性 245
8.2.4 多數操作僅添加數據 245
8.2.5 檔案的3種狀態 245
8.3 Git基本配置 246
8.4 Git基本命令 247
8.4.1 進行版本控制的第 一步——
Git init 248
8.4.2 常用的版本控制命令——
Git status 248
8.4.3 添加到追蹤列表中——Git add 248
8.4.4 提交——Git commit 249
8.4.5 查看項目歷史記錄——Git log 250
8.4.6 下載程式——Git clone 250
8.4.7 不同分支——Git branch 251
8.4.8 簽出一個分支——Git checkout 251
8.4.9 合併分支——Git merge 253
8.4.10 解決衝突 254
8.4.11 為版本打一個標籤——Git tag 255
8.4.12 幫助文檔——Git help 256
8.5 項目協作—GitHub 256
8.5.1 SSH key配置 257
8.5.2 項目託管——it remote 258
8.5.3 將項目推送到遠程倉庫——
Git push 259
8.5.4 更新**代碼——Git pull 260
8.5.5 Giti gnore忽略檔案 261
8.5.6 Fork 加Pull request多人協作
模式 262
第9章 開發人員必 備的技能—
單元測試 267
9.1 什麼是單元測試 267
9.2 為什麼要做單元測試 267
9.3 不寫單元測試的藉口 268
9.4 如何寫單元測試 269
9.4.1 第 一個單元測試 269
9.4.2 Junit簡介 272
9.4.2.1 Junit執行流程 273
9.4.2.2 Junit的斷言和失敗提示 273
9.4.2.3 運行多個測試類——
TestSuite 274
9.5 測試哪些內容 275
9.5.1 邊界條件 275
9.5.2 覆蓋執行路徑 275
9.6 模擬所需的功能模組—Mock
對象 278
9.6.1 手動Mock對象 278
9.6.2 使用Mockito庫 279
9.6.2.1 驗證某些行為 280
9.6.2.2 如何做一些測試樁(Stub) 280
9.6.2.3 參數匹配器 281
9.6.2.4 驗證函式的確切調用次數、
**少調用、從未調用 281
9.6.2.5 確保互動操作沒有執行
在Mock對象上 282
9.6.2.6 簡化Mock對象的創建 282
9.6.2.7 為連續的調用做測試
樁(stub) 283
9.6.2.8 為回調做測試樁 283
9.6.2.9 doReturn()、doThrow()、
doAnswer()、doNothing()
和doCallRealMethod()系列
方法的運用 283
9.6.2.10 監控真實對象 284
9.6.2.11 為下一步的斷言捕獲參數 285
9.6.2.12 綜合示例演練 285
9.7 Android中的單元測試 288
9.7.1 第 一個單元測試 288
9.7.2 使用Instrumentation測試 290
9.7.2.1 需要Context的測試用例 290
9.7.2.2 測試Activity 290
9.7.2.3 測試Service 293
9.7.2.4 測試ContentProvider 295
9.8 測試驅動開發(TDD)簡介 298
9.9 小結 300
第 10章 六大原則與設計模式 301
10.1 面向對象六大原則 301
10.1.1 單一職責原則 301
10.1.2 里氏替換原則 302
10.1.3 依賴倒置原則 304
10.1.4 開閉原則 304
10.1.5 接口隔離原則 306
10.1.6 迪米特原則 308
10.2 設計模式 309
10.3 避免掉進過度設計的怪圈 310
10.4 反模式 311
10.5 小結 311
第 11章 使系統適應變化—重構 312
11.1 為什麼要重構 312
11.2 什麼時候重構 313
11.3 常用的重構手法 313
11.3.1 提取子函式 313
11.3.2 上移函式到父類 316
11.3.3 下移函式到子類 318
11.3.4 封裝固定的調用邏輯 320
11.3.5 使用泛型去除重複邏輯 320
11.3.6 使用對象避免過多的參數 322
11.3.7 重構的支柱——轉移函式 324
11.3.8 將類型碼的轉為狀態模式 326
11.3.9 什麼也不做的對象——NullObject
模式 329
11.3.10 使類保持“苗條身材”——分解“胖”類型 331
11.4 小結 334
第 12章 從碼農曆練成工程師—
綜合實戰 335
12.1 項目需求 335
12.2 第 一版實現 336
12.3 第 一版存在的問題與重構 352
12.3.1 類型重命名 352
12.3.2 去除重複代碼 353
12.3.3 簡化複雜的函式 356
12.3.4 明確職責與降低耦合 358
12.4 降低複雜性—MVP架構 362
12.5 開啟單元測試之路—
添加單元測試 367
12.5.1 創建測試工程 367
12.5.2 測試網路請求解析類 369
12.5.3 測試資料庫操作類 371
12.5.4 測試業務邏輯Presenter 374
12.5.5 模擬對象 375
12.5.6 更多測試 377
12.6 小結 378

相關詞條

熱門詞條

聯絡我們