新到貨2本75折
App研發錄:架構設計、Crash分析和競品技術分析

App研發錄:架構設計、Crash分析和競品技術分析

  • 定價:354
  • 優惠價:87308
  • 運送方式:
  • 臺灣與離島
  • 海外
  • 可配送點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
  • 可取貨點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
載入中...
  • 分享
 

內容簡介

本書是作者多年App開發的經驗總結,從App架構的角度,重點總結了Android應用開發中常見的實用技巧和疑難問題解決方法,為打造高質量App提供有價值的實踐指導,迅速提升應用開發能力和解決疑難問題的能力。

本書涉及的問題有:Android基礎建設、網絡底層框架設計、緩存、網絡流量優化、制定編程規范、模塊化拆分、Crash異常的捕獲與分析、持續集成、代碼混淆、App競品技術分析、項目管理和團隊建設等。

本書以「問題/解決方案」的形式給出疑難問題的解決方案,同時結合示例代碼,深入剖析這些實用的編程技巧和模式,旨在幫助移動開發人員和管理人員提高編程效率,改進代碼質量,打造高質量的App。

包建強,畢業於復旦大學數學系。先后在多家互聯網公司擔任無線部門技術總監。在Android、iOS、WP等多門無線技術中跋涉過,在App的項目管理上也有多年的實踐經驗。他是微軟2008年MVP。曾經翻譯出版《.NET探秘MSIL權威指南》,並有一個堅持寫了6年的技術博客:http://jax.cnblOgs.com/。
 

目錄

序一
序二
序三
前言
第一部分 高效App框架設計與重構
第1章 重構,夜未眠 3
1.1 重新規划Android項目結構 3
1.2 為Activity定義新的生命周期 5
1.3 統一事件編程模型 7
1.4 實體化編程 9
1.4.1 在網絡請求中使用實體 9
1.4.2 實體生成器 11
1.4.3 在頁面跳轉中使用實體 12
1.5 Adapter模板 14
1.6 類型安全轉換函數 16
1.7 本章小結 17
第2章 Android網絡底層框架設計 19
2.1 網絡低層封裝 19
2.1.1 網絡請求的格式 19
2.1.2 AsyncTask的使用和缺點 21
2.1.3 使用原生的ThreadPoolExecutor + Runnable + Handler 24
2.1.4 網絡底層的一些優化工作 28
2.2 App數據緩存設計 32
2.2.1 數據緩存策略 32
2.2.2 強制更新 35
2.3 MockService 36
2.4 用戶登錄 38
2.4.1 登錄成功后的各種場景 39
2.4.2 自動登錄 41
2.4.3 Cookie過期的統一處理 44
2.4.4 防止黑客刷庫 45
2.5 HTTP頭中的奧妙 46
2.5.1 HTTP請求 46
2.5.2 時間校准 48
2.5.3 開啟gzip壓縮 51
2.6 本章小結 52
第3章 Android經典場景設計 53
3.1 App圖片緩存設計 53
3.1.1 ImageLoader設計原理 53
3.1.2 ImageLoader的使用 54
3.1.3 ImageLoader優化 55
3.1.4 圖片加載利器Fresco 56
3.2 對網絡流量進行優化 58
3.2.1 通信層面的優化 58
3.2.2 圖片策略優化 59
3.3 城市列表的設計 61
3.3.1 城市列表數據 61
3.3.2 城市列表數據的增量更新機制 63
3.4 App與HTML5的交互 64
3.4.1 App操作HTML5頁面的方法 64
3.4.2 HTML5頁面操作App頁面的方法 65
3.4.3 App和HTML5之間定義跳轉協議 66
3.4.4 在App中內置HTML5頁面 67
3.4.5 靈活切換Native和HTML5頁面的策略 68
3.4.6 頁面分發器 68
3.5 消滅全局變量 70
3.5.1 問題的發現 70
3.5.2 把數據作為Intent的參數傳遞 71
3.5.3 把全局變量序列化到本地 71
3.5.4 序列化的缺點 75
3.5.5 如果Activity也被銷毀了呢 79
3.5.6 如何看待SharedPreferences 80
3.5.7 User是唯 一例外的全局變量 80
3.6 本章小結 81
第4章 Android命名規范和編碼規范 83
4.1 Android命名規范 83
4.2 Android編碼規范 86
4.3 統一代碼格式 89
4.4 本章小結 90
第二部分 App開發中的高級技巧
第5章 Crash異常收集與統計 93
5.1 異常收集 93
5.2 異常收集與統計 96
5.2.1 人工統計線上Crash數據 96
5.2.2 第一個線上Crash報表:Crash分類 97
5.2.3 第二個線上Crash報表:Crash去重 99
5.2.4 線上Crash的其他分析工作 104
5.3 本章小結 105
第6章 Crash異常分析 107
6.1 Java語法相關的異常 108
6.1.1 空指針 108
6.1.2 角標越界 109
6.1.3 試圖調用一個空對象的方法 110
6.1.4 類型轉換異常 110
6.1.5 數字轉換錯誤 111
6.1.6 聲明數組時長度為—1111
6.1.7 遍歷集合同時刪除其中元素 112
6.1.8 比較器使用不當 114
6.1.9 當除數為0115
6.1.10 不能隨便使用的asList 116
6.1.11 又有類找不到了(一):ClassNotFoundException 116
6.1.12 又有類找不到了(二):NoClassDefFoundError 117
6.2 Activity相關的異常 117
6.2.1 找不到Activity 117
6.2.2 不能實例化Activity 118
6.2.3 找不到Service 118
6.2.4 不能啟動BroadcastReceiver 119
6.2.5 startActivityForResult不能回傳 119
6.2.6 猴急的Fragment 120
6.3 序列化相關的異常 120
6.3.1 實體對象不支持序列化 121
6.3.2 序列化時未指定ClassLoader 121
6.3.3 反序列化時發現類找不到:被ProGuard混淆導致的崩潰 122
6.3.4 反序列化時發現類找不到:傳入畸形數據 123
6.3.5 反序列化時出錯 123
6.4 列表相關的異常 123
6.4.1 Adapter數據源變化但是沒通知ListView 124
6.4.2 ListView滾動時點擊刷新按鈕后崩潰 125
6.4.3 AbsListView的obtainView返回空指針 125
6.4.4 Adapter數據源變化但是沒調用notifyDataSetChanged 126
6.5 窗體相關的異常 126
6.5.1 窗口句柄泄露 126
6.5.2 View not attached to window manager 128
6.5.3 窗體在不恰當的時候獲取了焦點 129
6.5.4 token null is not for an application 130
6.5.5 permission denied for this window type 131
6.5.6 is your activity running 131
6.5.7 添加窗體失敗 133
6.5.8 AlertDialog.resolveDialogTheme 134
6.5.9 The specif?ied child already has a parent 136
6.5.10 子線程不能修改UI 137
6.5.11 不能在子線程操作AlertDialog和Toast 141
6.6 資源相關的異常 143
6.6.1 Resources$NotFoundException 143
6.6.2 StackOverf?iowError 144
6.6.3 Unsatisf?iedLinkError 144
6.6.4 InfiateException之FileNotFoundException 145
6.6.5 InfiateException之缺少構造器 145
6.6.6 InfiateException之style與android:textStyle的區別 146
6.6.7 TransactionTooLargeException 147
6.7 系統碎片化相關的異常 147
6.7.1 NoSuchMethodError 147
6.7.2 RemoteViews 148
6.7.3 pointerIndex out of range 149
6.7.4 SecurityException之一:Intent中圖片太大 150
6.7.5 SecurityException之二:動態加載其他apk的activity 151
6.7.6 SecurityException之三:No permission to modify thread 151
6.7.7 view的getDrawingCache()返回null 152
6.7.8 DeadObjectException 153
6.7.9 Android 2.1不支持SSL 153
6.7.10 ViewFlipper引發的血案 153
6.7.11 ActivityNotFoundException 154
6.7.12 Android 2.2不支持xlargeScreens 154
6.7.13 Package manager has died 155
6.7.14 SpannableString與富文本字符串 155
6.7.15 Can not perform this action after onSaveInstanceState 156
6.7.16 Service Intent must be explicit 157
6.8 SQLite相關的異常 157
6.8.1 No transaction is active 158
6.8.2 忘記關閉Cursor 158
6.8.3 數據庫被鎖定 159
6.8.4 試圖再打開已經關閉的對象 159
6.8.5 文件加密了或無數據庫 159
6.8.6 WebView中SQLLite緩存導致的崩潰 160
6.8.7 磁盤讀寫錯誤 161
6.8.8 android_metadata表不存在 161
6.8.9 android_metadata表中的locale字段 162
6.8.10 數據庫或磁盤滿了 162
6.9 不明覺厲的異常 162
6.9.1 內存溢出 163
6.9.2 Verify Failed 163
6.10 其他情況的異常 163
6.10.1 TimeoutException 164
6.10.2 JSON解析異常 164
6.10.3 JSONArray在初始化時為空 164
6.10.4 第三方SDK拋出的Crash 165
6.10.5 兩個不同類型的View有相同的id 165
6.10.6 LayoutInfiater.from().infiate()使用不當導致的崩潰 166
6.10.7 ViewGroup中的玄機 166
6.10.8 Monkey點擊過快導致的崩潰 167
6.10.9 圖片縮放很多倍 168
6.10.10 圖片寬高為0168
6.10.11 不能重復添加組件 168
6.11 本章小結 169
……
第7章 ProGuard技術詳解 171
第8章 持續集成 181
第9章 App競品技術分析 205
第三部分 項目管理和團隊建設
第10章 項目管理決定了開發速度 251
第11章 日常工作中的問題解決 279
第12章 無線團隊的組建和管理 289
 

詳細資料

  • ISBN:9787111516385
  • 規格:303頁 / 普通級 / 1-1
  • 出版地:中國

最近瀏覽商品

 

相關活動

  • 從「格」的概念出發|
 

購物說明

溫馨提醒您:若您訂單中有購買簡體館無庫存/預售書或庫存於海外廠商的書籍,建議與其他商品分開下單,以避免等待時間過長,謝謝。

大陸出版品書況:因裝幀品質及貨運條件未臻完善,書況與台灣出版品落差甚大,封面老舊、出現磨痕、凹痕等均屬常態,故簡體字館除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。 

 

請注意,部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

調貨時間:若您購買海外庫存之商品,於您完成訂購後,商品原則上約45個工作天內抵台(若有將延遲另行告知)。為了縮短等待的時間,建議您將簡體書與其它商品分開訂購,以利一般商品快速出貨。 

若您具有法人身份為常態性且大量購書者,或有特殊作業需求,建議您可洽詢「企業採購」。 

退換貨說明 

會員所購買的商品均享有到貨十天的猶豫期(含例假日)。退回之商品必須於猶豫期內寄回。 

辦理退換貨時,商品必須是全新狀態與完整包裝(請注意保持商品本體、配件、贈品、保證書、原廠包裝及所有附隨文件或資料的完整性,切勿缺漏任何配件或損毀原廠外盒)。退回商品無法回復原狀者,恐將影響退貨權益或需負擔部分費用。 

訂購本商品前請務必詳閱商品退換貨原則

  • 翦商作者新作79折
  • 針灸匠張寶旬
  • 浪漫小說精選3本72折