具體描述
編輯推薦
《Android 4.X從入門到精通》具有全麵講解Android 4.X應用開發技巧、Android 4.X應用開發參考指南、隨書源代碼可以直接從網站下載等特點。
內容簡介
隨著Android係統的廣泛應用,消費者對移動設備應用程序的需求也變得多元化,為瞭幫助國內開發人員快速掌握Android應用開發技術,獲取更好的就業機會,作者結閤自身移動應用開發項目經驗,基於Android SDK 4.O Ice Cream Sandwich(冰激淩三明治)和4.1 Jelly Bean(果凍豆)編寫瞭《Android 4.X從入門到精通》。
《Android 4.X從入門到精通》共分13章,深入淺齣地講解瞭Android應用開發的各個方麵。全書在講解過程中穿插瞭大量的實例(實例源代碼可從前言提供的網址下載),幫助讀者在開發的道路上快速入門,獲得編程能力的提高。
《Android 4.X從入門到精通》在編寫過程中綜閤考慮瞭自學與教學兩方麵因素,不僅適閤高校教學、學生自學,同時也適閤有一定開發經驗的程序員作為技術參考使用。
作者簡介
李波,畢業於中國科學院瀋陽自動化研究所,博士,講師,研究方嚮為虛擬現實、高性能計算、移動開發等技術。
史江萍,畢業於東北大學,碩士,具有豐富的移動應用開發項目經驗。
王祥鳳,畢業於東北電力大學,碩士,具有豐富的移動應用開發項目經驗。
內頁插圖
目錄
第1章 Android係統概述
1.1 智能手機
1.1.1 什麼是智能手機
1.1.2 智能手機操作係統
1.2 什麼是Android
1.2.1 Android的曆史
1.2.2 Android的發展
1.2.3 Android的優點
1.3 Android係統架構
1.3.1 應用程序層(Applications)
1.3.2 應用程序框架層(ApplicationFramework)
1.3.3 係統庫(Libraries)
1.3.4 Android運行環境(AndroidRuntime)
1.3.5 Linux內核(LinuxKernel)
1.4 小結
1.5 思考題
第2章 搭建Androld開發環境
2.1 係統需求
2.2 軟件安裝
2.2.1 JDK的安裝
2.2.2 AndrOjdSDK
2.2.3 Eclipse和ADT
2.2.4 創建AVD
2.2.5 AVD與真機的區彆
2.3 AndroidSDK介紹
2.3.1 AndroidSDK目錄結構
2.3.2 Android.jar
2.3.3 AndroidAPI核心包
2.3.4 AndroidAPI擴展包
2.4 創建第一個Android應用程序
2.4.1 創建HeIIoAndroid工程
2.4.2 編寫代碼,
2.4.3 運行應用程序
2.4.4 工程文件結構解析
2.5 調試程序
2.5.1 設置斷點
2.5.2 調試
2.6 小結
2.7 思考題
第3章 Android應用程序結構
3.1 應用程序基本組成
3.1.1 ACljVity
3.1.2 Senrvece
3.1.3 BroadcastReceiver
3.1.4 ContentProvider
3.1.5 lntenl
3.2 ACtiVity
3.2.1 Activity的生命周期
3.2.2 Activity的創建
3.2.3 啓動ActMty
3.2.4 關閉Activity
3.2.5 Activity數據傳遞
3.3 資源
3.4 AndroidManifest.xml
3.5 小結
3.6 思考題
第4章 開戶界麵開發
第5章 電話和短信應用程序開發
第6章 多媒體開發
第7章 數據存儲
第8章 網絡編程
第9章 位置服務
第10章 繪圖
第11章 Android的國際化與本地化
第12章 應用程序發布
第13章 Android4.1 來瞭,4.2 也來瞭
前言/序言
自2007年5月Android開源手機平颱問世以來,已經經曆瞭五年的發展。五年間,基於Android平颱的智能手機迅速占領市場,成為當前最受歡迎的手機操作係統。與之伴隨的基於Android操作係統的應用程序需求多元化,Android開發技術成為市場求職的新寵。
為瞭幫助國內開發人員快速掌握Android開發技術,獲取更好的就業機會,筆者基於Google公司2011年10月發布的Android SDK 4.0 (API Level 14),兼顧2012年6月28日發布的Android SDK 4.1 Jelly Bean(果凍豆)編寫瞭本書,希望能夠幫助廣大讀者在Android開發的道路上入門並且獲得提高。
本書共分為13章,由淺入深地講解瞭Android開發的各個方麵。本書在講解過程中穿插瞭大量實例,希望藉此能幫助讀者更好地理解Android開發的過程。本書的前3章為本書的基礎,係統地介紹瞭Android係統的誕生和發展的過程、Android的係統框架、Android開發環境的搭建以及Android應用程序的基本組件,並且著重講解瞭Android係統中人機交互的基本組件Activity的基本知識。第4章講解瞭Android開發過程中界麵開發的相關知識,包括在用戶界麵設計過程中常用的布局和組件,以及Android處理人機交互事件的方法。第5章講解瞭Intent的基本知識,並利用Intent實現瞭電話和短信應用程序開發功能。第6章主要講解瞭Android係統下的多媒體開發技術,實現瞭音頻和視頻的播放。通過Service和BroadcastReceiver實現瞭後颱音頻播放的相關功能,通過Android提供的硬件編程API實現瞭自己的錄像和拍照應用程序。第7章講解瞭Android係統提供的四種數據存儲方式,分彆為SharedPreferces、文件存儲方式、數據庫存儲方式和ContentProvider。活用這些數據存儲方式,實現數據持久化,是應用程序開發過程中不可迴避的問題。
……
Android 4.X 深度解析:係統架構、核心組件與高級開發實踐 本書旨在為讀者提供一個全麵而深入的Android 4.X係統理解,從其底層的架構設計到上層的應用開發,層層遞進,力求構建一個完整且紮實的知識體係。我們不再局限於“入門”的錶麵,而是深入“精通”的實質,聚焦於Android 4.X這一經典且具有裏程碑意義的版本,探索其核心的運作機製、重要的開發模式以及解決實際開發中常見挑戰的策略。 第一部分:Android 4.X 係統架構的基石 在這一部分,我們將首先剖析Android 4.X的整體架構。這不僅僅是簡單羅列組件,而是要理解它們之間如何協同工作,形成一個強大且靈活的移動操作係統。 Linux 內核:Android 的心髒與靈魂 深入探討Linux內核在Android係統中的作用,不僅僅是作為一個進程管理和內存管理的載體,更重要的是它提供瞭驅動程序、電源管理、Binder IPC機製等關鍵功能。我們將分析Android如何利用Linux內核的特性,例如Linux的內存管理機製,如OOM Killer(Out-of-Memory Killer)如何影響應用程序的生命周期,以及文件係統(如YAFFS2或Ext4)在Android設備存儲中的重要性。 我們將詳細解析Linux Binder IPC(Inter-Process Communication)在Android中的地位,它不僅僅是進程間通信的手段,更是Android係統中各種服務(如Activity Manager Service, Window Manager Service)與應用程序組件之間高效、安全通信的核心。理解Binder的工作原理,包括Service Manager、Binder Driver、Binder Kernel Driver以及User Space Binder Driver,對於理解Android的整體設計理念至關重要。 Android Runtime (ART) 與 Dalvik 虛擬機:代碼執行的雙生子 雖然Android 4.X 主要使用Dalvik虛擬機,但我們也會簡要介紹ART(Android Runtime)的發展背景,為讀者理解後續Android版本的演進奠定基礎。我們將深入剖析Dalvik虛擬機的設計,包括其指令集、字節碼格式、內存管理(堆、棧、垃圾迴收機製)以及JIT(Just-In-Time)編譯器的作用。 我們將重點分析Dalvik是如何優化Java代碼在移動設備上的執行效率的,例如其寄存器架構、方法調用機製以及對象創建過程。通過對比分析,讀者可以更清晰地理解Dalvik與標準Java虛擬機之間的差異,以及這些差異如何適應移動平颱的資源限製。 硬件抽象層 (HAL):連接硬件與軟件的橋梁 HAL是Android係統實現硬件無關性的關鍵。我們將詳細講解HAL的架構,包括其接口定義(IDL)、實現以及如何通過Binder IPC與上層框架通信。 我們將選取幾個典型的HAL模塊進行深入分析,例如Camera HAL、Audio HAL、Sensor HAL等,理解它們如何封裝底層硬件驅動,並嚮上層提供標準化的API。通過瞭解HAL,讀者能更深刻地理解Android係統在不同硬件平颱上保持一緻性的技術秘密。 原生 C/C++ 庫:支撐係統運行的基石 Android係統依賴大量C/C++編寫的原生庫,例如SQLite、WebKit、OpenGL ES、Stagefright Multimedia Framework等。我們將講解這些庫在Android中的作用,以及它們如何與Java層框架進行交互。 我們將重點關注Stagefright多媒體框架,它是Android處理音頻和視頻的關鍵組件。理解Stagefright的組件構成,如OMX(OpenMAX)組件、Parser、PlayerEngine等,對於開發涉及多媒體功能的應用程序至關重要。 Java API 框架:構建應用世界的基石 這是開發者最常接觸的層次。我們將詳細介紹Android Framework的核心組件,如Activity Manager, Package Manager, Window Manager, Content Providers, Services等,以及它們提供的API。 我們將深入理解Activity生命周期管理、Intent機製、Fragment的使用、Broadcast Receivers、Service的創建與管理,以及Content Providers的數據共享模式。重點分析Android 4.X在這些方麵的特性和改進。 應用層:用戶與Android交互的窗口 我們將簡要介紹用戶在應用層如何與Android係統交互,以及應用開發的基本流程。 第二部分:Android 4.X 核心組件深度解析 這一部分將聚焦於Android 4.X中幾個最核心、最常用,也最能體現其設計思想的組件,進行深度剖析。 Activity 與 Fragment:用戶界麵的核心構建塊 Activity 的生命周期與狀態管理: 深入解析Activity的onCreate, onStart, onResume, onPause, onStop, onDestroy等迴調方法,理解Activity在不同狀態下的行為。重點分析Activity的實例狀態保存與恢復機製,以及如何在屏幕鏇轉、內存不足等情況下保證用戶數據的完整性。 Fragment 的設計理念與應用: 詳細講解Fragment的引入,以及它如何解決Activity在多屏幕適配和UI復用上的難題。深入分析Fragment的生命周期,Fragment與Activity的交互,以及Fragment的懶加載、Fragment的嵌套等高級用法。我們將對比分析Fragment在Android 4.X與早期版本中的差異和優化。 Activity 棧的管理: 理解Activity棧的工作原理,以及finishAffinity()、clearTaskOnLaunch等方法在管理Activity棧時的作用。 Intent:組件間通信的強大引擎 顯式 Intent 與隱式 Intent: 詳細講解如何使用Intent在組件之間啓動Activity、啓動Service、發送Broadcast。重點分析隱式Intent的匹配機製,包括Action, Category, Data, Type等屬性,以及如何通過Intent Filter來聲明組件的能力。 Intent 的 Flag: 深入解析Intent的各種Flag(如FLAG_ACTIVITY_NEW_TASK, FLAG_ACTIVITY_CLEAR_TOP等)如何影響Activity的啓動行為和Activity棧的管理。 PendingIntent: 理解PendingIntent的作用,以及它在通知、Widget等場景下的應用。 Service:後颱任務的守護者 Service 的生命周期與啓動模式: 講解startService(), bindService(), stopService(), unbindService()等方法的區彆與聯係,以及Service的onCreate, onStartCommand, onDestroy等生命周期迴調。 Foreground Service: 介紹如何創建Foreground Service,以及它在需要用戶持續感知且不易被係統迴收的後颱任務中的應用。 IntentService: 分析IntentService的設計,它如何簡化Service中單綫程處理後颱任務的需求。 Broadcast Receiver:事件驅動的消息總綫 Broadcast Receiver 的注冊與接收: 講解動態注冊與靜態注冊Broadcast Receiver的方式。 係統廣播與自定義廣播: 分析Android係統提供的各種係統廣播(如網絡狀態變化、電池電量變化等),以及如何發送自定義廣播。 有序廣播與廣播優先級: 理解有序廣播的工作原理,以及abortBroadcast()方法的作用。 Content Provider:數據共享的典範 Content Provider 的設計理念: 講解Content Provider如何實現跨應用的數據共享,以及其URI、MIME Type等概念。 CRUD 操作: 詳細講解Content Provider的query(), insert(), update(), delete()方法,以及如何實現這些方法。 ContentResolver: 分析ContentResolver在訪問Content Provider數據時的作用,以及Cursor的使用。 自定義 Content Provider 的實現: 提供一個完整的自定義Content Provider的開發示例。 第三部分:Android 4.X 高級開發實踐與優化 在掌握瞭核心組件的基礎上,本部分將聚焦於更高級的開發技巧、性能優化以及解決實際開發中遇到的棘手問題。 UI 繪製與布局優化: 自定義 View 的繪製流程: 深入理解View的measure(), layout(), draw()方法,以及如何創建高效的自定義View。 布局優化技巧: 分析include, merge, ViewStub等標簽的作用,以及避免過度嵌套的布局方案。 高效的列錶渲染: 深入講解ListView和GridView的復用機製,以及Adapter的設計模式,並探討RecyclerView(盡管在4.X時代尚未普及,但可作為未來方嚮的鋪墊,或分析其設計思想的演變)的設計理念。 硬件加速與 GPU 渲染: 瞭解Android的硬件加速機製,以及如何利用OpenGL ES進行高性能圖形渲染。 多綫程與異步處理: 主綫程(UI 綫程)的重要性: 強調在UI綫程執行耗時操作的危害,以及如何避免ANR(Application Not Responding)。 AsyncTask: 深入解析AsyncTask的原理,包括其綫程池、任務發布和結果迴調機製。 Handler、Message、Looper、MessageQueue: 詳解Android的消息機製,理解Handler如何實現綫程間的通信。 Thread 與 Runnable: 簡要迴顧Java多綫程基礎,並說明在Android中的應用。 並發與同步: 討論Android中常用的並發控製手段,如synchronized, Lock等。 數據存儲與持久化: SharedPreferences: 講解SharedPreferences的適用場景,以及其讀寫操作。 SQLite 數據庫: 深入講解SQLite數據庫在Android中的應用,包括Schema設計、SQL語句編寫、事務處理,以及如何使用SQLiteOpenHelper進行版本管理。 文件存儲: 分析內部存儲、外部存儲的讀寫權限和應用場景。 ORM 框架(例如 GreenDao 的早期版本或類似概念): 探討使用ORM框架簡化數據庫操作的可能性,理解其設計思想。 網絡編程與通信: HTTP 客戶端: 深入分析Android中常用的HTTP客戶端庫,例如Apache HttpClient (在Android 4.X時代仍廣泛使用) 或HttpURLConnection,並探討其使用方法和注意事項。 JSON 與 XML 解析: 講解常用的JSON和XML解析庫,如Jackson、Gson、XStream等,以及它們的優缺點。 Socket 編程: 簡要介紹Socket編程在Android中的應用場景。 性能調優與內存管理: 內存泄漏的檢測與分析: 講解如何使用Android Studio的Profiler、LeakCanary等工具檢測和分析內存泄漏。 CPU 使用率優化: 分析如何通過代碼優化、算法改進來降低CPU占用。 電量優化: 探討Android係統對電量的管理機製,以及如何在應用開發中實現電量優化。 位圖(Bitmap)的加載與管理: 重點分析Bitmap的加載、縮放、復用機製,以及如何避免OOM(Out Of Memory)問題。 進程間通信 (IPC) 深度探索: Binder 深入實踐: 除瞭第一部分的原理講解,本部分將通過實際案例,演示如何創建和使用Binder服務,以及Stub/Proxy模式在Binder通信中的應用。 AIDL (Android Interface Definition Language): 詳細講解AIDL的語法,以及如何利用AIDL跨進程調用遠程服務。 Messenger: 介紹Messenger作為一種更輕量級的IPC機製,在簡單場景下的應用。 其他重要主題: 權限管理: 講解Android 4.X時代的權限模型,以及運行時權限的基本概念。 後颱任務管理: 深入探討JobScheduler(雖然在4.X時代不完善,但可以提及),AlarmManager等後颱任務調度機製。 通知 (Notifications) 的高級用法: 講解如何創建豐富的通知,包括自定義視圖、Action按鈕等。 Widget 開發: 介紹如何開發Android桌麵小部件。 通過以上詳細的內容劃分,本書將引領讀者循序漸進地掌握Android 4.X的精髓。我們不僅僅停留在“是什麼”,更注重“為什麼”和“怎麼做”,力求讓讀者在理解Android係統的底層設計原理的同時,也能熟練運用各種開發技術解決實際問題,最終達到“精通”的目標。本書的每一章節都將包含大量的代碼示例、圖示分析和實戰技巧,確保讀者能夠學以緻用,在Android開發領域更上一層樓。