Android 最佳化技術的核心內容完整呈現,UI版面配置最佳化+記憶體最佳化+程式最佳化+效能最佳化+系統最佳化+最佳化工具。
本書將Android最佳化技術的核心內容展現給讀者。全書循序漸進、詳細地說明Android最佳化技術的基礎,內容新穎、知識全面、說明詳細。Android最佳化技術博大精深,需要程式設計師具備極高的水準和開發經驗,本書將帶領讀者迅速進入Android 開發領域。
作者序
進入21 世紀以來,整個社會已經逐漸變得陌生了!生活和工作的快節奏令我們目不暇接,各種各樣的資訊充斥著我們的視野、衝擊著我們的思維。追憶過去,Windows 作業系統的誕生成就了微軟的霸主地位,也造就了PC 時代的繁榮。然而,以Android 和iPhone 手機為代表的智慧行動裝置的發明卻敲響了PC 時代的警鐘!行動網際網路時代已經來臨,誰會成為這些行動裝置上的主宰?毫無疑問,
這就是Android——PC 時代的Windows!
◎極大的優勢
從技術角度而言,Android 與iPhone 相似,都採用WebKit 瀏覽器引擎,具備觸控式螢幕、進階圖形顯示和上網功能,使用者能夠在手機上查收電子郵件、搜索網址和觀看視訊節目等。Android 手機比iPhone 等其他手機更強調搜索功能,介面更強大,可以說是一種融入了全部Web 應用的平台。Android 的版本包含:Android1.1、Android 1.5、Android 1.6、Android 2.0 等, 目前的最新版本是Android4.2。隨著版本的更新,從最初的觸控螢幕到現在的多點觸控,從普通的連絡人到現在的資料同步,從簡單的GoogleMap 到現在的導覽系統,從基本的網頁瀏覽到現在的HTML 5,這都說明Android 已經逐漸穩定,而且功能越來越強大。此外,Android 平台不僅支援 Java、C、C++ 等主流的程式語言,還支援Ruby、Python
等指令碼語言,甚至Google 還專為Android 的應用程式開發推出了Simple 語言,這使得Android 具有非常廣泛的開發群眾。
◎最佳化的目的是加強使用者體驗
我們做任何一款產品,目標使用者群眾永遠是消費者,而使用者體驗常常決定一款產品的暢銷程度。作為智慧型手機來說,因為其本身硬體遠不及PC,所以這就要求我們需要為消費者提供擁有更好使用者體驗的產品,只有這樣我們的產品才會受推崇。
使用者體驗的英文是User Experience,簡稱UE。它是一種純主觀的在使用者使用產品過程中建立起來的感受。對於一個界定明確的使用者群眾來講,其使用者體驗的共通性是能夠經良好設計實驗認識到。新競爭力在網路行銷基礎與實作中曾提到電腦技術和網際網路的發展,使技術創新形態正在發生轉變,以使用者為中心、以人為本越來越獲得重視,使用者體驗也因此被稱作創新2.0 模式的精髓。
◎本書的內容
本書循序漸進地、詳細地說明了Android 最佳化技術的基礎,內容新穎、知識全面、說明詳細。Android 最佳化技術博大精深,需要程式設計師具備極高的水準和開發經驗。筆者從事Android 開發也是短短數載,也不可能完全掌握Android 最佳化技術。本書將盡可能地將Android 最佳化技術的核心內容展現給讀者,書中主要提供了以下最佳化內容。
(1) UI 版面配置最佳化
說明了最佳化UI 介面版面配置的基礎以及各種版面配置的技巧,剖析了減少層次結構、延遲載入和巢狀結構最佳化等方面的知識。
(2) 記憶體最佳化
詳細說明了Android 系統記憶體的基礎,分析了Android 獨有的垃圾回收機制,並分別剖析了縮放處理、資料儲存、使用與釋放、記憶體洩漏和記憶體溢位等方面的知識。
(3) 程式最佳化
說明了在開發過程中,最佳化程式加強執行效率的基礎。
(4) 效能最佳化
說明了資源儲存、載入DEX 檔案和APK、虛擬機器的效能、平台最佳化、最佳化繪製機制等方面的知識。
(5) 系統最佳化
詳細說明了處理程序管理員、設定介面、後台停止、傳輸記憶體程式和最佳化快取等方面的知識。
(6) 最佳化工具
詳細說明了市面上常見的最佳化工具,例如最佳化大師、處理程序管理等。
◎本書特色
本書內容相當豐富,涵蓋Android 最佳化技術人員成長道路上的各方面。我們的目標是透過一本圖書,提供多本圖書的價值,讀者可以根據自己的需要選擇性閱讀,以增強本人的知識和技能。在內容的撰寫上,本書具有以下特色。
(1) 結構合理
從使用者的實際需要出發,科學安排知識結構,內容由淺入深,敘述清楚,並附有對應的歸納和練習,具有很強的知識性和實用性,反映目前Android 最佳化技術的發展和應用水準。同時全書精心篩選最具代表性、讀者最關心的基礎
知識,幾乎包含了Android 最佳化技術的所有方面。
(2) 易學容易
本書條理清晰、語言簡潔,可幫助讀者快速掌握每個基礎知識;每個部分既相
互連貫又自成系統,讓讀者既可以按照本書編排的章節順序進行學習,也可以
根據自己的需求對某一章節進行針對性的學習。
(3) 實用性強
本書徹底摒棄枯燥的理論和簡單的操作,注重實用性和可操作性,將Android
最佳化技術的理論融合到實際的作業環境中,讓使用者掌握相關操作技能的同
時,還能學習到對應的開發知識。
◎本書的適合讀者群
本書在內容安排上由淺入深,寫作上層層剝洋蔥式的分解,充分實例舉證,非常適合Android 開發技術的初學者,同時也適合具有一定Android 開發基礎,想對Android 開發技術進一步了解和掌握的進階使用者。如果你是以下類型的讀者,本書會帶領你迅速進入Android 開發領域。
●有一定Android 開發經驗的讀者。
●從事Android 開發的研究人員和工作人員。
●有一定的Android 基礎,想快速學會Android 進階技術的讀者。
●有一定Android 開發基礎,需要加深對Android 技術核心進一步了解和掌握的程式設計師。
●大專院校相關科系學生,或需要撰寫論文的學生。
●企業和公司在職人員、需要加強學習或工作需要的程式設計師。
●從事Android 行動網路開發等相關工作的技術人員。
進入21 世紀以來,整個社會已經逐漸變得陌生了!生活和工作的快節奏令我們目不暇接,各種各樣的資訊充斥著我們的視野、衝擊著我們的思維。追憶過去,Windows 作業系統的誕生成就了微軟的霸主地位,也造就了PC 時代的繁榮。然而,以Android 和iPhone 手機為代表的智慧行動裝置的發明卻敲響了PC 時代的警鐘!行動網際網路時代已經來臨,誰會成為這些行動裝置上的主宰?毫無疑問,
這就是Android——PC 時代的Windows!
◎極大的優勢
從技術角度而言,Android 與iPhone 相似,都採用WebKit 瀏覽器引擎,具備觸控式螢幕、進階圖形顯示和上網...
目錄
Chapter01 Android 系統閃亮登場
1.1 一款全新的智慧型手機平台——Android
1.1.1 何謂智慧型手機
1.1.2 看目前主流的智慧型手機系統
1.2 分析Android 的優勢
1.2.1 第一個優勢—— 系出名門
1.2.2 第二個優勢—— 強大的開發團隊
1.2.3 第三個優勢—— 獎金豐厚
1.2.4 第四個優勢——程式開放原始碼
1.3 架設開發環境
1.3.1 安裝Android SDK 的系統要求
1.3.2 安裝JDK、Eclipse、Android SDK
1.3.3 設定Android SDK Home
1.4 建立Android 虛擬裝置(AVD)
1.4.1 Android 模擬器簡介
1.4.2 模擬器和實機的區別
1.4.3 建立Android 虛擬裝置
1.4.4 啟動模擬器
1.4.5 快速安裝SDK
1.5 解決架設環境過程中的三個問題
1.5.1 不能線上更新
1.5.2 一直顯示Project name must be specified 提示
1.5.3 Target 清單中沒有Target 選項
Chapter02 分析Android 核心框架
2.1 簡析Android 安裝檔案
2.1.1 Android SDK 目錄結構
2.1.2 android.jar 及其內部結構
2.1.3 SDK 說明文件
2.1.4 Android SDK 實例簡介
2.2 Android 的系統架構詳解
2.2.1 Android 系統結構介紹
2.2.2 Android 專案檔案結構
2.2.3 應用程式的生命週期
2.3 簡析Android 核心
2.3.1 Android 繼承於Linux
2.3.2 Android 核心和Linux 核心的區別
2.4 簡析Android 原始程式
2.4.1 取得並編譯Android 原始程式
2.4.2 Android 對Linux 的改造
2.4.3 為Android 建構Linux 的作業系統
Chapter03 為什麼需要最佳化
3.1 使用者體驗是產品成功的關鍵
3.1.1 什麼是使用者體驗
3.1.2 影響使用者體驗的因素
3.1.3 使用者體驗設計目標
3.2 Android 的使用者體驗
3.3 不同的廠商,不同的硬體
3.4 Android 最佳化概述
Chapter04 UI 版面配置最佳化
4.1 和版面配置相關的元件
4.1.1 View 視畫素件
4.1.2 Viewgroup 容器
4.2 Android 中的5 種版面配置方式
4.2.1 線性版面配置LinearLayout
4.2.2 框架版面配置FrameLayout
4.2.3 絕對版面配置AbsoluteLayout
4.2.4 相對版面配置RelativeLayout
4.2.5 表格版面配置TableLayout
4.3 標籤在UI 介面中的最佳化作用
4.4 遵循Android Layout 最佳化的兩段通用程式
4.5 最佳化Bitmap 圖片
4.5.1 實例說明
4.5.2 實作方式
4.6 FrameLayout 版面配置最佳化
4.6.1 使用減少視圖層級結構
4.6.2 使用重用Layout 程式
4.6.3 延遲載入
4.7 使用Android 為我們提供的最佳化工具
4.7.1 Layout Optimization 工具
4.7.2 Hierarchy Viewer 工具
4.7.3 聯合使用和標籤實現互補
4.8 歸納Android UI 版面配置最佳化的原則和方法
Chapter05 Android 的記憶體系統
5.1 記憶體和處理程序的關係
5.1.1 處理程序管理工具的紛爭
5.1.2 程式設計師的工作
5.1.3 Android 系統記憶體設計
5.2 分析Android 的處理程序通訊機制
5.2.1 Android 的處理程序間通訊(IPC) 機制Binder
5.2.2 Service Manager 是Binder 機制的上下文管理者
5.2.3 分析Server 和Client 獲得Service Manager 的過程
5.3 分析Android 系統匿名共用記憶體C++呼叫介面
5.3.1 Java 程式
5.3.2 相關程式
5.4 Android 中的垃圾回收
5.4.1 sp 和wp 簡析
5.4.2 詳解智慧指標(android refbase 類別(sp 和wp))
Chapter06 Android 記憶體最佳化
6.1 Android 記憶體最佳化的作用
6.2 檢視Android 記憶體和CPU 使用情況
6.2.1 利用Android API 函數檢視
6.2.2 直接對Android 檔案進行解析查詢
6.2.3 透過Runtime 類別實現
6.2.4 使用DDMS 工具取得
6.2.5 其他方法
6.3 Android 的記憶體洩漏
6.3.1 什麼是記憶體洩漏
6.3.2 為什麼會發生記憶體洩漏
6.3.3 shallow size、retained size
6.3.4 檢視Android 記憶體洩漏的工具
6.3.5 檢視Android 記憶體洩漏的方法
6.3.6 Android(Java) 中常見的容易引起記憶體洩漏的不良程式
6.4 常見的引起記憶體洩漏的壞毛病
6.4.1 查詢資料庫時忘記關閉游標
6.4.2 建構Adapter 時不習慣使用快取的convertView
6.4.3 沒有及時釋放物件的參考
6.4.4 不在使用Bitmap 物件時呼叫recycle() 釋放記憶體
6.5 演練解決記憶體洩漏
6.5.1 使用MAT 根據heap dump 分析Java 程式記憶體洩漏的根源
6.5.2 演練Android 中記憶體洩漏程式最佳化及檢測
6.6 Android 圖片的記憶體最佳化
Chapter07 程式碼最佳化
7.1 Android 程式最佳化的基本原則
7.2 最佳化Java 程式
7.2.1 GC 物件最佳化
7.2.2 儘量使用StringBuilder 和StringBuffer 進行字串連接
7.2.3 及時釋放不用的物件
7.3 撰寫更高效的Android 程式
7.3.1 避免建立物件
7.3.2 最佳化方法呼叫程式
7.3.3 最佳化程式變數
7.3.4 最佳化程式過程
7.3.5 加強Cursor 查詢資料的效能
7.3.6 編碼中儘量使用ContentProvider 共用資料
7.4 Android 控制項的效能最佳化
7.4.1 ListView 控制項的程式最佳化
7.4.2 Adapter( 介面卡) 最佳化
7.4.3 ListView 非同步載入圖片最佳化
7.5 最佳化Android 圖形
7.5.1 2D 繪圖的基本最佳化
7.5.2 觸發螢幕圖形觸控器的最佳化
7.5.3 SurfaceView 繪圖覆蓋更新及重繪矩形更新方法
Chapter08 性能優化
8.1 資源儲存最佳化
8.1.1 Android 檔案儲存
8.1.2 Android 中的資源儲存
8.1.3 Android 資源的類型和命名
8.1.4 Android 檔案資源(raw/data/asset) 的存取
8.1.5 Android 對Drawable 物件的最佳化
8.1.6 建議使用Drawable,而非Bitmap
8.2 載入APK 檔案和DEX 檔案
8.2.1 APK 檔案介紹
8.2.2 DEX 檔案介紹和最佳化
8.2.3 Android 類別動態載入技術實現加密最佳化
8.3 SD 卡最佳化
8.4 Android 的虛擬機器最佳化
8.4.1 Android 虛擬機器概述
8.4.2 平台最佳化——ARM 的管線技術
8.4.3 Android 對C 函數庫最佳化
8.4.4 建立處理程序的最佳化
8.4.5 繪製最佳化
8.5 SQLite 最佳化
8.5.1 Android SQLite 的查詢最佳化
8.5.2 SQLite 效能最佳化技巧
8.6 Android 的圖片快取處理和效能最佳化
Chapter09 系統最佳化
9.1 基本系統最佳化
9.1.1 更新軔體重新啟動
9.1.2 刷核心
9.1.3 精簡內建應用
9.1.4 基本系統最佳化歸納
9.2 處理程序管理
9.2.1 Android 處理程序跟Windows 處理程序是兩回事
9.2.2 檢視目前系統中正在執行的程式
9.2.3 列舉Android 系統的處理程序、工作和服務的資訊
9.2.4 研究Android 處理程序管理員的實現
9.3 將Android 軟體從手機記憶體傳輸到儲存卡
9.3.1 第一步:準備工作
9.3.2 第二步:儲存卡分區
9.3.3 第三步:將軟體移動到SD 卡
9.4 常用的系統最佳化工具
9.4.1 優化大師
9.4.2 360 手機衛士
Chapter10 開發一個Android 最佳化系統
10.1 優化大師介紹
10.1.1 手機優化大師用戶端
10.1.2 手機優化大師PC 端
10.2 專案介紹
10.2.1 規劃UI 介面
10.2.2 預期效果
10.3 準備工作
10.3.1 新增專案
10.3.2 主介面
10.4 撰寫主介面程式
10.5 處理程序管理模式模組
10.5.1 基礎狀態檔案
10.5.2 CPU 和記憶體使用資訊
10.5.3 處理程序詳情
10.6 處理程序視圖模組
10.6.1 處理程序主視圖
10.6.2 處理程序視圖
10.6.3 取得處理程序資訊
10.7 處理程序類別模組
10.7.1 載入處理程序
10.7.2 後台載入設定
10.7.3 載入顯示
10.8 檔案管理模式模組
10.8.1 檔案分類
10.8.2 載入處理程序
10.8.3 檔案視圖處理
10.9 檔案管理模組
10.9.1 資料夾
10.9.2 顯示檔案資訊
10.9.3 操作檔案
10.9.4 取得處理程序的CPU 和記憶體資訊
10.10 系統測試
Chapter11 綜合實例—— 手機地圖系統
11.1 專案分析
11.1.1 規劃UI 介面
11.1.2 資料儲存設計和最佳化
11.2 具體實現
11.2.1 新增專案
11.2.2 主介面
11.2.3 新增介面
11.2.4 設定介面
11.2.5 說明介面
11.2.6 地圖介面
11.2.7 資料存取
11.2.8 實現Service 服務
11.3 發佈自己的作品來盈利
11.3.1 申請會員
11.3.2 產生簽名檔
11.3.3 使用簽名檔
11.3.4 發佈
Chapter12 綜合實例——Android 足球遊戲
12.1 手機遊戲產業的發展
12.1.1 1.2 億手機遊戲使用者
12.1.2 淘金的時代
12.1.3 手機遊戲的未來發展
12.2 Java 遊戲開發基礎
12.3 足球遊戲介紹
12.3.1 手機足球遊戲
12.3.2 策劃遊戲
12.3.3 準備工作
12.4 專案架構
12.4.1 整體架構
12.4.2 規劃類別
12.5 Android 手機遊戲的最佳化策略
12.6 具體程式開發
12.6.1 Activity 類別開發
12.6.2 歡迎介面
12.6.3 載入節目
12.6.4 運動控制
12.6.5 獎品模組
Chapter01 Android 系統閃亮登場
1.1 一款全新的智慧型手機平台——Android
1.1.1 何謂智慧型手機
1.1.2 看目前主流的智慧型手機系統
1.2 分析Android 的優勢
1.2.1 第一個優勢—— 系出名門
1.2.2 第二個優勢—— 強大的開發團隊
1.2.3 第三個優勢—— 獎金豐厚
1.2.4 第四個優勢——程式開放原始碼
1.3 架設開發環境
1.3.1 安裝Android SDK 的系統要求
1.3.2 安裝JDK、Eclipse、Android SDK
1.3.3 設定Android SDK Home
1.4 建立Android 虛擬裝置(AVD)
1.4.1 Android 模擬器簡介
1.4.2 模擬器和實...