Android APP開發實戰——從規劃到上線全程詳解
1 開發APP前的準備事項
1.1 APP适配的硬體
1.2 APP橫豎屏界面的選擇
1.3 APP适配的作業系統版本
1.4 APP适配的螢幕尺寸
1.5 APP開發樣機的選擇
1.6 APP内置的圖檔資源
2 APP産品和設計人員的工作
2.1 編寫産品文檔時的注意事項
2.2 設計效果圖時的注意事項
2.3 APP的切圖工作
2.4 點9圖簡介
2.4.1 點9圖
2.4.2 制作工具
2.4.3 注意事項
2.5 産品和設計文檔的版本管理
3 APP端和伺服器端的協作
3.1 接口設計注意事項
3.2 安全方案
3.2.1 HTTP方法的使用
3.2.2 使用時間戳參數
3.2.3 資料加密
3.2.4 密碼的處理
3.2.5 資料的存儲
3.3 登入方式
3.3.1 賬号+密碼
3.3.2 賬号+密碼+驗證碼
3.4 登入狀态的維持
3.4.1 利用Token實作
3.4.2 利用Cookie實作
3.4.3 利用賬号和密碼實作
3.5 資料同步方案
3.5.1 檔案的同步
3.5.2 位址資料的同步
3.5.3 非位址資料的同步
3.6 業務邏輯的實作
3.7 接口文檔的維護
4 字元編碼
4.1 字元集
1.ASCII及其擴充字元集
2.ISO-8859-1字元集
3.GB2312字元集
4.BIG5字元集
5.GBK字元集
6.GB18030字元集
7.UCS字元集
8.UNICODE字元集
4.2 字元編碼
1.UTF-8
2.UTF-16
3.UTF-8、UTF-16和UTF-32的優缺點
4.3 位元組序
5 TCP/IP概述
5.1 協定簡介
5.2 TCP和UDP的差別
5.2.1 面向連接配接服務
5.2.2 無連接配接服務
6 HTTP網絡請求
6.1 HTTP簡介
6.1.1 協定
6.1.2 HTTP方法
1.方法
2.GET與POST的差別
6.1.3 HTTP消息
1.請求消息
2.響應消息
6.1.4 HTTP頭字段介紹
1.通用頭字段
2.請求頭字段
3.響應頭字段
4.實體頭字段
6.1.5 Keep-Alive模式介紹
6.1.6 HTTP狀态碼簡介
6.2 Cookie簡介
6.2.1 Cookie
6.2.2 Cookie的設定和發送
6.3 Session簡介
6.3.1 Session
6.3.2 SessionID
6.4 短連接配接與長連接配接
6.4.1 短連接配接
6.4.2 長連接配接
6.4.3 使用場景
1.短連接配接
2.長連接配接
6.5 Volley網絡庫簡介
6.5.1 Volley網絡庫
6.5.2 Volley網絡庫的使用
7 HTTPS概述
7.1 協定簡介
7.2 HTTPS的認證類型
7.2.1 單向認證
7.2.2 雙向認證
8 加密簡介
8.1 對稱加密
8.2 非對稱加密
8.3 MD5簡介
9 設計模式
9.1 設計模式簡介
9.2 面向對象設計原則
9.3 設計模式類别
9.3.1 單例模式
9.3.2 Builder模式
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.3.14 擴充卡模式
9.3.15 外觀模式
9.3.16 橋接模式
10 架構模式
10.1 MVC架構
10.2 MVP架構
10.3 MVVM架構
10.4 MVP+VM架構
11 APP架構設計
11.1 基本原則
1.逐層調用原則及單向調用原則
2.針對接口程式設計,而不是針對實作程式設計
3.依賴倒置原則
4.封裝變化原則
5.開放—關閉原則
6.單一歸屬原則
11.2 分層設計
11.2.1 三層架構
11.2.2 View層設計
11.2.3 業務邏輯層設計(Presenter)
11.2.4 資料通路層設計(Model)
11.2.5 功能子產品設計
1.實體類子產品
2.輔助類子產品設計
3.三方功能子產品設計
11.3 層間通信
11.3.1 通信方式
11.3.2 互動模式
11.4 跨業務子產品調用
11.4.1 跨業務子產品調用簡介
11.4.2 跨業務子產品調用方案
12 Activity概述
12.1 Activity啟動方式
12.1.1 啟動模式
12.1.2 FLAG介紹
12.2 Activity消息路由
12.2.1 設計思路
12.2.2 具體實作
12.3 Activity資料的儲存和恢複
12.3.1 臨時儲存資料和恢複資料
12.3.2 持久儲存資料和恢複資料
12.4 Activity資料傳遞
12.4.1 資料傳遞媒介
1.通過Intent傳遞資料
2.使用全局對象傳遞資料
3.使用單例對象傳遞資料
4.使用靜态變量傳遞資料
5.使用持久化方式傳遞資料
6.使用剪切闆傳遞資料
12.4.2 資料傳遞機制
12.5 BaseActivity設計
12.5.1 應用級别的BaseActivity設計
12.5.2 功能級别的BaseActivity設計
1.定位功能的BaseActivity
2.動畫功能和視屏播放功能的BaseActivity
3.具有編輯功能的BaseActivity
13 Service概述
13.1 Service的不同形式
13.2 Service與線程
13.3 IntentService
13.4 前台服務
13.5 服務的生命周期
1.啟動服務
2.綁定服務
14 Broadcast概述
14.1 廣播機制簡介
14.2 BroadcastReceiver
14.2.1 靜态注冊
14.2.2 動态注冊
14.3 廣播類型
14.3.1 普通廣播(Normal Broadcast)
14.3.2 系統廣播(System Broadcast)
14.3.3 有序廣播(Ordered Broadcast)
14.3.4 局部廣播(Local Broadcast)
14.4 廣播的安全性
15 ContentProvider概述
16 Fragment概述
16.1 Fragment簡介
16.2 Fragment的建立
16.3 Fragment的懶加載
16.4 Fragment的資料儲存和恢複
16.4.1 臨時儲存資料和恢複
16.4.2 持久儲存資料和恢複
16.5 Fragment的使用場景
17 Android權限
17.1 權限分類
17.1.1 Normal Permissions
17.1.2 Dangerous Permissions
17.2 動态權限申請
17.3 相容性問題
18 Android動畫
18.1 幀動畫
18.2 View動畫
18.3 屬性動畫簡介
18.3.1 屬性動畫
18.3.2 使用示例
1.純代碼方式實作動畫
2.代碼和XML檔案結合實作動畫
18.4 Activity切換動畫
19 圖檔類型
19.1 位圖簡介
19.1.1 位圖
19.1.2 WebP格式
19.2 矢量圖簡介
20 Android矢量圖的使用
20.1 功能簡介
20.2 相容性處理
20.3 Vector文法簡介
1.Path指令
2.使用原則
20.4 Vector靜态圖的使用
1.ImageView中使用矢量圖
2.TextView和Button中使用矢量圖
20.5 Vector動态圖的使用
20.5.1 功能實作
20.5.2 動态Vector相容性問題
21 Android異常
21.1 異常分類
1.checked exception
2.unchecked exception
21.2 異常處理
21.2.1 使用try…catch…處理異常
21.2.2 使用UncaughtExceptionHandler處理異常
21.2.3 ANR異常的處理
21.3 注意事項
22 Android的本地存儲
22.1 内部存儲(Internal Storage)
22.1.1 非緩存檔案的處理
22.1.2 緩存檔案的處理
22.2 外部存儲(External Storage)
22.2.1 外部公共存儲
22.2.2 外部私有存儲
1.非緩存檔案的處理
2.緩存檔案的處理
22.2.3 使用作用域目錄通路
23 ABI管理
23.1 ABI簡介
23.2 支援的ABI
23.3 為特定ABI生成代碼
23.4 Android系統的ABI管理
23.5 Android系統ABI支援
23.6 安裝時自動解壓縮原生代碼
24 ProGuard混淆
24.1 ProGuard簡介
24.2 ProGuard指令介紹
24.3 ProGuard注意事項
24.4 ProGuard相關檔案
25 Android Studio使用技巧
25.1 編譯打包
25.2 功能宏的使用
25.3 內建SO檔案
25.4 模闆的定制使用
26 APP緩存處理
26.1 緩存簡介
26.2 緩存控制
1.伺服器端控制緩存
2.用戶端控制緩存
26.3 緩存實作
1.緩存資料的儲存
2.緩存資料的更新
26.4 WebView緩存
26.5 緩存注意事項
26.6 清除資料和清除緩存的差別
27 APP性能優化
27.1 減少APP所占空間大小
27.1.1 減少圖檔所占空間大小
27.1.2 減少音頻檔案所占空間大小
27.1.3 減少代碼所占空間大小
27.1.4 使用APK Analyzer分析APP
1.APK Analyzer簡介
2.檢視檔案和大小資訊
3.檢視AndroidManifest.xml
4.檢視代碼和資源實體
5.檢視DEX檔案
6.比較APK檔案
27.1.5 利用工具減少APP大小
27.2 減少APP使用的網絡流量
27.3 記憶體優化
27.3.1 節省記憶體
27.3.2 防止記憶體洩露
27.3.3 防止OOM
27.4 UI性能優化
27.5 電量優化
27.6 運作速度優化
27.7 性能優化工具
27.7.1 Android Studio自帶工具
27.7.2 Android系統工具
27.7.3 三方工具
28 Log功能設計
28.1 Log輸出控制
28.2 注意事項
28.3 Log資料的格式化
28.4 使用AOP技術輸出Log
28.4.1 AOP簡介
28.4.2 AOP技術的使用
29 APP版本管理
30 APP版本更新功能設計
30.1 功能項
30.1.1 伺服器端功能
30.1.2 APP端功能
30.2 APP和伺服器互動
31 APP常用功能設計
31.1 啟動界面設計
31.1.1 啟動界面白屏解決方案
31.1.2 啟動界面屏蔽傳回按鍵
31.2 首頁設計
31.3 登入功能設計
31.4 商品詳情界面設計
31.5 購物車功能設計
31.6 商品展示界面功能設計
31.7 個人中心界面功能設計
31.8 搜尋功能設計
31.9 WebView功能設計
31.10 出錯提示功能設計
31.11 界面内容隐藏和顯示設計
31.12 提示功能設計
31.12.1 三種控件簡介
31.12.2 AlertDialog介紹
31.12.3 Toast介紹
31.12.4 Snackbar介紹
31.13 定期執行任務的功能設計
31.13.1 JobScheduler介紹
1.onStartJob 方法
2.jobFinished方法
3.onStopJob方法
31.13.2 JobScheduler的替代方案
31.13.3 注意事項
31.14 全屏模式的功能設計
31.14.1 Lean Back
31.14.2 Immersive
31.15 開機自啟動的功能設計
31.15.1 普通模式
31.15.2 直接啟動模式
31.15.3 示例代碼
31.16 APP快捷圖示的功能設計
31.16.1 簡介
31.16.2 靜态快捷圖示
31.16.3 動态快捷圖示
31.17 針對Android7.0及更高版本的背景優化方案
31.17.1 對于CONNECTIVITY_ACTION 限制的解決方案
31.17.2 對于ACTION_NEW_PICTURE和ACTION_NEW_VIDEO的限制的解決方案
31.18 伺服器接口的單元測試
31.18.1 單元測試
31.18.2 使用MockWebServer進行接口的單元測試
31.19 自動調整文字大小的TextView
31.19.1 Default方式
31.19.2 Granularity方式
31.19.3 Preset Sizes方式
32 代碼封裝
33 APP測試
1.相容性測試
2.極限測試
3.網絡狀況測試
4.權限測試
5.橫豎屏模式測試
6.性能測試
7.稽核測試
34 項目管理
34.1 項目團隊成員
34.2 需求處理
34.3 進度計劃
35 Git使用
35.1 Git工具簡介
35.1.1 用戶端工具
35.1.2 伺服器端工具
35.2 Git常用指令
35.3 使用Git的注意事項
思維導圖
防止部落格圖床圖檔失效,防止圖檔源站外鍊:
http://www.processon.com/chart_image/5e5b3689e4b0d4dc8776d1e3.png)
思維導圖線上編輯連結:
https://www.processon.com/view/5e5b3689e4b0d4dc8776d1e0