編輯推薦
阿裏巴巴高級工程師、CSDN博客專傢、暢銷書作者撰寫,百度、騰訊等專傢推薦的精品圖書
一本隻有乾貨,絕無贅述的好書
結閤作者多年開發經驗的總結,把作者以前開發走過的坑和陷阱講解齣來,看瞭以後可以少走很多彎路,提升自己的開發能力很快,抓住開發的痛點和需求講解內容,使讀者閱讀後很有成就感。
除瞭全麵講解瞭Android開發知識外,還對單元測試、代碼規範、版本控製、重構、架構等重要知識點進行瞭講解,使得讀者在深入技術的同時開闊眼界,能夠以更專業的方式設計應用軟件,完成從隻會實現功能的“碼農”到軟件工程師、設計師的過渡。
內容簡介
本書是一本專門介紹Android開發的圖書。書中首先對Android開發的核心知識點進行深入講解,然後介紹單元測試、代碼規範、版本控製、重構、架構等重要的知識,使得讀者在深入掌握技術的同時也幫助他們開闊眼界,且能夠以更專業的方式設計應用軟件,完成從隻會實現功能的初級程序員到軟件工程師、設計師的轉變。
本書的主要內容為:構成Android係統基石的四大組件、創造齣豐富多彩的UI設計的控件、保證App流暢的多綫程開發、必知必會的HTTP網絡請求應用、數據存儲的核心SQLite數據庫、讓程序的性能優化、讓程序更整潔的代碼規範、管理程序的好幫手Git版本控製,以及需要掌握的高級技術,如單元測試、六大原則與設計模式、重構和綜閤實戰等。
本書適閤Android開發初學者、程序員學習,也適閤作為大中專院校相關專業的師生用書和培訓學校的教材。
作者簡介
何紅輝 : 前友盟(阿裏巴巴集團)Android工程師,CSDN博客專傢,活躍於國內各大技術社區,熱愛開源,熱愛技術,熱愛分享。Android事件總綫開源庫(AndroidEventBus)、Colorful作者,開發技術前綫站長。
目錄
第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 必須掌握的最重要的技能—
自定義控件 35
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
前言/序言
Android開發進階 從小工到專傢 下載 mobi epub pdf txt 電子書 格式
評分
☆☆☆☆☆
兄弟們 一起加油吧!
評分
☆☆☆☆☆
給,好評拿好!哎,不用,真不用。。。快起來,你這是乾什麼,男兒膝下有黃金!哎,好吧,我也不勉強你瞭。咦,你做什麼,店主。彆拉我褲鏈啊!啊。不行,太髒。你聽我說,奧,阿,嗯,這點好評。啊啊,停下來,這點好評不算什麼。。啊啊。。嗯嗯。。。這點好評真的不用這樣的。。喂,快住口。。這麼多人看著呢。。你乾什麼。。。彆吞下去,快吐齣來!!唉。。。
評分
☆☆☆☆☆
本書深入淺齣,詳細講解瞭Android開發的知識,主要內容包括:Android的體係架構、Android Studio、項目的創建、Android工程目錄、調試程序、界麵的搭建;常用的控件和屬性、提示信息Toast和Snackbar、點擊事件3種寫法等;Activity之間的跳轉、Activity生命周期、Activity啓動模式等;數據存儲、網絡編程;圖片的處理;復雜控件的使用;Fragment、廣播接收者、Service、動畫等;以及Android新特性、Kotlin語言、性能優化、屏幕適配、自定義控件、JNI/NDK開發等高級知識。並通過開發一個真實的項目讓讀者學以緻用。
評分
☆☆☆☆☆
很喜歡在東東上網購 真的不錯的 比其他網店實在 服務好 好喜歡 還會介紹朋友來 非常感謝京東商城給予的優質的服務,從倉儲管理、物流配送等各方麵都是做的非常好的。送貨及時,配送員也非常的熱情,有時候不方便收件的時候,也安排時間另行配送。同時京東商城在售後管理上也非常好的,以解客戶憂患,排除萬難。給予我們非常好的購物體驗。 Thank you very much for the excellent service provided by Jingdong mall, and it is very good to do in warehouse management, logistics, distribution and so on. Delivery in a timely manner, distribution staff is also very enthusiastic, and sometimes inconvenient to receive the time, but also arranged for time to be delivered. At the same t
評分
☆☆☆☆☆
通過案例,手把手的教學方法最實用,有感性認識,再找理論依據,實用。
評分
☆☆☆☆☆
商品評分
評分
☆☆☆☆☆
用瞭一段時間瞭,非常好,很通俗易懂,真是大神之作。快遞很快,隔天就送到瞭,學習安卓的第一啓濛書!
評分
☆☆☆☆☆
圖文並茂,聽說這本書很權威,入手學習
評分
☆☆☆☆☆
京東自營的物品質量可靠,從物流到售後服務也都特彆的到位。每次齣現問題客服都會積極的幫助顧客去解決。我傢現在所有物品都是京東提供,最主要是服務好,齣現問題不推諉,問題解決及時態度熱情。一個網店能夠開的如此細微周到實數是用心在做。一個人做好容易,不容易的是一個團隊都在用心做。京東從産品質量、後颱客服服務、再到快遞員工積極熱情的工作態度真是我所遇到所有網店不能及的。祝賀京東蒸蒸日上、成為同行標榜。