産品特色
編輯推薦
本書從基礎、架構、安全、性能優化、新技術、測試等角度,通過簡單的代碼示例詳盡地展示瞭 Android 開發技巧
本書作者技術基礎深厚紮實,是新技術的探索和追逐者,他對於技術發自內心地熱愛, 是業界非常優秀的 Android 架構師
本書是作者在一綫互聯網企業工作多年的經驗沉澱,從不同角度對 Android 新技術拋磚引玉,由淺入深,將實戰中的案例抽象成原型,通俗易懂
本書對於技術的解讀樸實風趣,深入淺齣,是 Android 工程師的進階寶典,騰訊、華為、阿裏、百度、平安科技等一綫移動開發工程師聯袂推薦
內容簡介
《Android高級進階》是Android的進階學習指南,主要為Android初中級開發者進階所需的知識,高級開發者也可以從本書中發現很多共鳴點。《Android高級進階》從8個方麵對50個知識點進行分類講解,包括基礎篇、係統架構篇、經驗總結篇、新技術篇、性能優化篇、移動安全篇、工具篇、測試篇。熟練掌握這些知識點後,應該就能夠應付實際項目開發中的絕大部分問題瞭。
《Android高級進階》的主要目的在於給讀者一個完整的Android中高級開發者知識圖譜。筆者希望通過《Android高級進階》的係統講解,能夠幫助讀者在麵試和工作中收獲自己滿意的成績。
作者簡介
顧浩鑫,網絡 ID:ASCE1885,平安金融科技移動研發工程師,目前主要從事 Android & React Native 相關研發工作,畢業於華中科技大學圖像識彆與人工智能研究所,曾先後就職於華為、百度、平安科技。
精彩書評
與本書作者在兩傢公司都是同事,也有多個Android項目閤作的經曆,作者基礎非常紮實,經常探索並應用Android新技術、新框架,是業界非常優秀的Android架構師。本書是作者在一綫互聯網企業工作多年的經驗沉澱,從不同角度對Android新技術拋磚引玉,將實戰中的案例抽象成原型,全書內容通俗易懂,特彆推薦給有誌在移動端發展的工程師朋友們。
騰訊移動互聯網事業部 何朝陽
書中涵蓋瞭Android開發生命周期的各個方麵,尤其注重高質量的開發實踐。作者從基礎、架構、安全、性能優化、新技術、測試等角度,通過簡單的代碼示例詳盡地展示瞭Android開發技巧。作者對代碼的優雅以及對卓越性能的完美追求,足以保證本書成為Android研發工程師不可或缺的參考書。
騰訊移動互聯網事業部 揭宗昌
與筆者共事一年多,深刻體會到筆者紮實沉穩的氣質,以及探索創新的銳氣。長期從事一綫軟件開發工作使得筆者對“工欲善其事,必先利其器”有著深刻的理解,本書從Android開發涉及的各個方麵,各個階段闡述筆者的經驗沉澱,也係統地介紹各類開源工具和開發利器,適閤各層次的讀者閱讀。
華多網絡娛樂部 歐陽紹聰
本書作者技術基礎深厚、紮實,是新技術的探索和追逐者,與他共事期間,我深刻感受到他對於技術發自內心的熱愛,他的Android應用開發技術達到爐火純青的地步,在APP開發和優化上有豐富的實戰經驗,同時他還是開源社區的活躍分子和貢獻者。作者經曆瞭移動互聯網的熱潮,見證瞭 APP應用開發技術的萌芽、發展和成熟。現在移動互聯網的開發者也逐步開始關注插件化技術、性能優化、行業新技術,係統架構等進階技術。本書的上市彌補瞭Android進階技術係統化解讀的空缺,作者對於技術的解讀樸實風趣,深入淺齣,內容都是在大型互聯網公司工作與探索積纍下來的精華,是Android工程師的進階寶典和麵試寶典,推薦給廣大從事移動開發的朋友們。
阿裏移動事業部 顧大輝
目錄
第1篇 基礎篇
第1章 Android觸摸事件傳遞機製
1.1 觸摸事件的類型
1.2 事件傳遞的三個階段
1.3 View的事件傳遞機製
1.4 ViewGroup的事件傳遞機製
第2章 Android View的繪製流程
2.1 繪製的整體流程
2.2 MeasureSpec
2.3 Measure
2.4 Layout
2.5 Draw
第3章 Android 動畫機製
3.1 逐幀動畫(Frame Animation)
3.1.1 XML 資源文件方式
3.1.2 代碼方式
3.2 補間動畫(Tween Animation)
3.2.1 插值器 Interpolator
3.2.2 AlphaAnimation
3.2.3 ScaleAnimation
3.2.4 TranslateAnimation
3.2.5 RotateAnimation
3.2.6 自定義補間動畫
3.3 屬性動畫(Property Animation)
3.3.1 Evaluator
3.3.2 AnimatorSet
3.3.3 ValueAnimator
3.3.4 ObjectAnimator
3.4 過渡動畫(Transition Animation)
第4章 Support Annotation Library 使用詳解
4.1 Nullness 注解
4.2 資源類型注解
4.3 類型定義注解
4.4 綫程注解
4.5 RGB 顔色值注解
4.6 值範圍注解
4.7 權限注解
4.8 重寫函數注解
4.9 返迴值注解
4.10 @VisibleForTesting
4.11 @Keep
第5章 Percent Support Library使用詳解
第6章 Design Support Library使用詳解
6.1 Snackbar
6.2 TextInputLayout
6.3 TabLayout
6.4 NavigationView
6.4.1 導航菜單
6.4.2 導航頭部
6.5 FloatingActionButton
6.5.1 使用浮動操作按鈕
6.5.2 其他選項
6.5.3 點擊事件
6.6 CoordinatorLayout
6.7 CollapsingToolbarLayout
6.8 BottomSheetBehavior
第7章 Android Studio中的NDK開發
7.1 ABI的基本概念
7.2 引入預編譯的二進製 C/C++ 函數庫
7.3 直接從 C/C++ 源碼編譯
7.3.1 配置 ndk.dir 變量
7.3.2 在 Gradle 中配置 NDK 模塊
7.3.3 添加 C/C++ 文件到指定的目錄
7.4 使用 .so 文件的注意事項
7.4.1 使用高平颱版本編譯的 .so 文件運行在低版本的設備上
7.4.2 混閤使用不同的C++ 運行時編譯的 .so 文件
7.4.3 沒有為每個支持的 CPU 架構提供對應的 .so 文件
7.4.4 將 .so 文件放在錯誤的地方
7.4.5 隻提供 armeabi 架構的 .so 文件而忽略其他 ABIs 的
第8章 Gradle 必知必會
8.1 共享變量的定義
8.2 通用配置
8.3 aar 函數庫的引用
8.4 簽名和混淆的配置
第9章 通過Gradle打包發布函數庫到JCenter和Maven Central
9.1 Maven Central 和 JCenter
9.1.1 Maven Central
9.1.2 JCenter
9.2 Android Studio 獲取函數庫的原理
9.3 上傳函數庫到 JCenter
9.3.1 步驟一:在 Bintray 網站上注冊一個賬號
9.3.2 步驟二:創建一個 Sonatype 賬號
9.3.3 步驟三:在 Bintray 網站使能自動簽名
9.3.4 步驟四:生成 POM 相關的信息
9.3.5 步驟五:上傳函數庫到 Bintray
9.3.6 步驟六:發布 Bintray 用戶倉庫到 JCenter
9.3.7 步驟七:同步函數庫到 Maven Central
第10章 Builder模式詳解
10.1 經典的 Builder 模式
10.2 Builder 模式的變種
10.3 變種 Builder 模式的自動化生成
10.4 開源函數庫的例子
第11章 注解在 Android 中的應用
11.1 注解的定義
11.2 標準注解
11.2.1 編譯相關注解
11.2.2 資源相關注解
11.2.3 元注解
11.3 運行時注解
11.4 編譯時注解
11.4.1 定義注解處理器
11.4.2 注冊注解處理器
11.4.3 android-apt插件
第12章 ANR産生的原因及其定位分析
12.1 ANR 産生的原因
12.2 典型的 ANR 問題場景
12.3 ANR 的定位和分析
12.3.1 Logcat 日誌信息
12.3.2 traces.txt 日誌信息
12.4 ANR的避免和檢測
12.4.1 StrictMode
12.4.2 BlockCanary
第13章 Android異步處理技術
13.1 Thread
13.2 HandlerThread
13.3 AsyncQueryHandler
13.4 IntentService
13.5 Executor Framework
13.6 AsyncTask
13.7 Loader
13.8 總結
第14章 Android數據序列化方案研究
14.1 Serializable
14.2 Parcelable
14.3 SQLiteDatabase
14.4 SharedPreferences
14.5 JSON
14.6 Protocol Buffers及Nano-Proto-Buffers
14.7 FlatBuffers
第15章 Android WebView Java 和 JavaScript 交互詳解
15.1 Java 調用 JavaScript
15.2 JavaScript 調用 Java
第2篇 係統架構篇
第16章 MVP模式及其在Android中的實踐
16.1 MVP 的基本概念
16.2 MVP 與 MVC 的區彆
16.3 MVP 的開源實現
16.3.1 Android-Architecture
16.3.2 TODO-MVP
16.3.3 TODO-MVP-Loaders
16.3.4 TODO-MVP-Clean
16.3.5 TODO-Databinding
16.3.6 其他開源參考實現
16.4 MVP 的好處
16.5 MVP 存在的問題
第17章 MVVM模式及Android DataBinding實戰
17.1 Data Binding 錶達式
17.2 數據對象
17.3 數據綁定
17.4 事件綁定
第18章 觀察者模式的拓展:事件總綫
18.1 為何要使用
18.2 原理
18.3 開源實現
18.3.1 EventBus
18.3.2 otto
18.4 與觀察者模式及 Android 廣播的區彆
第19章 書寫簡潔規範的代碼
19.1 Java 編碼規範
19.1.1 源代碼文件的定義
19.1.2 源代碼文件的結構
19.1.3 遵循的格式
19.1.4 命名約定
19.1.5 Javadoc
19.2 Android 命名規範
19.2.1 布局文件的命名
19.2.2 資源文件的命名
19.2.3 類的命名
19.3 CheckStyle 的使用
第20章 基於開源項目搭建屬於自己的技術堆棧
20.1 APP 的整體架構
20.2 技術選型的考量點
20.3 日誌記錄能力
20.4 JSON 解析能力
20.4.1 gson
20.4.2 jackson
20.4.3 Fastjson
20.4.4 LoganSquare
20.5 數據庫操作能力
20.5.1 ActiveAndroid
20.5.2 ormlite
20.5.3 greenDAO
20.5.4 Realm
20.6 網絡通信能力
20.6.1 android-async-http
20.6.2 OkHttp
20.6.3 Volley
20.6.4 Retrofit
20.7 圖片緩存和顯示能力
20.7.1 BitmapFun
20.7.2 Picasso
20.7.3 Glide
20.7.4 Fresco
20.7.5 Android-Universal-Image-Loader
第3篇 經驗總結篇
第21章 64K方法數限製原理與解決方案
21.1 64K 限製的原因
21.2 使用 MultiDex 解決 64K 限製的問題
21.2.1 Android 5.0 之前的版本
21.2.2 Android 5.0 及之後的版本
21.3 如何避免齣現 64K 限製
21.4 配置 MultiDex
21.5 MultiDex Support Library 的局限性
21.6 在開發階段優化 MultiDex 的構建
第22章 Android 插件框架機製研究與實踐
22.1 基本概念
22.1.1 宿主和插件
22.1.2 ClassLoader 機製
22.2 開源框架
22.2.1 android-pluginmgr
22.2.2 dynamic-load-apk
22.2.3 DynamicAPK
22.2.4 DroidPlugin
22.2.5 Small
第23章 推送機製實現原理詳解
23.1 推送的開源實現方案
23.1.1 基於 XMPP 協議
23.1.2 基於 MQTT 協議
23.2 推送的第三方平颱
23.3 自己實現推送功能
23.3.1 長連接的建立(TCPConnectThread)
23.3.2 數據的發送(TCPSendThread)
23.3.3 數據的接收(TCPReceiveThread)
23.3.4 心跳包的實現(TCPHeartBeatThread)
第24章 APP 瘦身經驗總結
24.1 APP 為什麼變胖瞭
24.2 從 APK 文件的結構說起
24.3 優化圖片資源占用的空間
24.3.1 無損壓縮 [ImageOptim]
24.3.2 有損壓縮 [ImageAlpha]
24.3.3 有損壓縮 [TinyPNG]
24.3.4 PNG/JPEG 轉換為 WebP
24.3.5 盡量使用 NinePatch 格式的 PNG 圖
24.4 使用 Lint 刪除無用資源
24.5 利用 Android Gradle 配置
24.5.1 minifyEnable
24.5.2 shrinkResources
24.5.3 resConfigs
24.5.4 ndk.abiFilters
24.6 重構和優化代碼
24.7 資源混淆
24.8 插件化
第25章 Android Crash 日誌收集原理與實踐
25.1 Java 層 Crash 捕獲機製
25.1.1 基本原理
25.1.2 綫程信息
25.1.3 SharedPreference 信息
25.1.4 係統設置
21.1.5 Logcat 中的日誌記錄
25.1.6 自定義 Log 文件中的內容
25.1.7 MemInfo 信息
25.2 Native 層 Crash 捕獲機製
25.3 Crash 的上報
第4篇 新技術篇
第26章 函數式編程思想及其在Android中的應用
26.1 代碼的簡化
26.2 Operators 簡介
第27章 依賴注入及其在Android中的應用
27.1 基本概念
27.1.1 構造函數注入
27.1.2 Setter 函數注入
27.1.3 接口注入
27.2 為何需要框架
27.3 開源框架的選擇
27.3.1 ButterKnife
27.3.2 RoboGuice
27.3.3 Dagger
27.3.4 Dagger2
27.3.5 框架的對比
第28章 Android世界的Swift:Kotlin在Android中的應用
28.1 選擇 Kotlin 的原因
28.2 Kotlin 的安裝和配置
28.3 Kotlin 語言的特性
28.3.1 可錶達性
28.3.2 空類型安全
28.3.3 擴展函數
28.4 Kotlin 的 Gradle 配置
28.5 將 Java 類轉換成 Kotlin 類
28.6 相關資料
第29章 React Native For Android入門指南
29.1 環境配置
29.1.1 Homebrew
29.1.2 nvm
29.1.3 Node.js
29.1.4 watchman
29.1.5 flow
29.2 Android 開發環境的要求
29.3 React Native 工程配置
29.3.1 安裝react-native
29.3.2 生成工程
29.4 Android Studio 工程概覽
29.5 React Native 依賴庫修改為本地
29.5.1 下載 react-native.aar
Android高級進階 下載 mobi epub pdf txt 電子書 格式