天天看點

書評:使用Android SDK建構應用,第2版

本文來源于我在InfoQ中文站翻譯的文章,原文位址是:http://www.infoq.com/cn/articles/Book_Review_Building_Applications_Android_SDK_2nd_Edition

在最新版的Android開發者手冊:使用Android SDK建構應用(第2版)一書中,作者Ronan Schwarz、Phil Dutson、James Steele與Nelson To成功地向Addison-Wesley開發者書庫系列添加了濃墨重彩的一筆。這本面向移動應用開發者的圖書可以作為新手的權威指南。對于中級與專家級開發者來說,本書也将有助于他們增強自身的程式設計實踐。

讀者在學習如何編寫自己的代碼的同時還可以将書中的攻略、代碼片段與使用者界面布局快速應用到Android項目中以建立出自己的原始應用。

本書的一大特色就是指導讀者如何使用Android基本的應用程式設計接口(API)來確定應用能夠在各種碎片化的裝置與不同的OS版本上運作;回顧過去、立足現在、展望未來。作者還談到了Android、Linux核心、Java架構與Eclipse內建開發環境之間的關系。

書中講述了對OS做了怎樣的修改使之能夠在移動生态圈的舞台上大放異彩,移動裝置具有更小的螢幕和有限的選項,并且在必要時需要使用私有的Android庫。與Swing或Timer等Java庫及X Windows或GNU C庫等典型的Linux工具不同,他們并不适合于在Android上編碼。

從書中的第1章開始,讀者就将深入到這個世界上最為流行的移動OS的具體細節當中。書中談到了構成作業系統的必要檔案,如何確定易丢失的閃存的安全性,他們由6個鏡像構成:

  • Bootloader——在啟動時開始裝載啟動鏡像
  • Boot鏡像——核心與RAMDisk
  • System鏡像——帶有應用的OS平台
  • Data鏡像——在不同的權限模式下儲存使用者資料
  • Recovery鏡像——儲存更新并重新建構檔案
  • Radio鏡像——儲存Radio棧檔案

作者建議開發者深入了解硬體與他們所編寫的代碼之間的關系。他們強調不僅要考慮現有的智能手機和平闆之間在記憶體與處理能力、螢幕尺寸、分辨率、前後攝像頭上差别的重要性,還要考慮到現在或是未來将會運作在OS上的全新裝置類型,比如說智能手表、訓練裝置、醫療裝置、汽車,甚至是遊戲機等,建議開發者們要盡可能編寫裝置中立的代碼。

作者強調了在設計應用時能夠把握全局的重要性。這意味着開發者應該能夠清晰地認識到完成後的應用是什麼樣子的。這4位作者将他們專業的建議與經驗都濃縮到了這本手冊中。

他們建議在建立Android應用時使用Eclipse IDE來保證最佳的效果。

下面是一段示例攻略:

活動與意圖

這項操作的步驟與上一個攻略類似:

  1. 在Eclipse中,選擇File → New → Android Application Project。
  2. 填寫項目名,比如說SimpleFragmentExample。
  3. 填寫應用名,比如說Example of Basic Fragments。
  4. 填寫包名,比如說com.cookbook.simplefragments。
  5. 将最低限度的SDK設為API Level 11或是Android Honeycomb。
  6. 低版本API能夠使用Fragments的前提是機器上要安裝好額外的支援庫。
  7. 在Create Activity界面上,選擇MasterDetailFlow作為起始點。
  8. 命名條目,比如說fruits。
  9. 按下Finish按鈕完成示例項目的建立。

探索該示例的任務就交給讀者完成了,下面重點來談談Fragments。Fragments有自己的生命周期,它取決于宿主活動。由于在活動生命周期的任何時刻,我們都可以添加、顯示、隐藏以及删除Fragments,是以其存活周期要比其他元件短很多。類似于活動,Fragments也有onPause()、onResume()、onDestroy()及onCreate()方法。

然而,值得注意的是onCreate(Bundle)是Fragment上所調用的第2個方法,第1個被調用的方法是onAttach(Activity),它會發出現已連接配接到宿主活動的信号。這裡可以調用活動的方法,然而系統并不保證活動已經完全完成了自身的初始化。隻有在調用了onActivityCreated()方法後活動自身的onCreate()方法才會被調用。

假設Fragments可以在晚些時候執行個體化并被加到活動上來,那麼我們就不應該依賴onAttach()中活動的狀态。用來初始化視圖并啟動大多數任務的方法是onCreateView(LayoutInflater, ViewGroup, Bundle)。如果Fragment是重新建立的,那麼這裡的Bundle類就是儲存的執行個體狀态。Fragments還會使用bundles來序列化參數。Fragment所需的每一種外部資訊都可以通過調用setArguments()從宿主活動中獲得,并且總是可以通過getArguments()調用在Fragments中讀取。這樣就可以将來自于活動起始意圖的資訊直接傳遞給顯示的Fragment。

應用最為重要的特性之一就是使用者界面了。在Android開發者手冊的第5章中,我們将會學習到一個基本的UI布局的3個關鍵元素:界面視圖、界面觸摸事件以及定義應用屬性的按鍵。這包含了完整的資源目錄,比如說用于動畫的res/animator/以及用于XML檔案的res/menu,它會選擇菜單。

每個UI對象都有3個可定義的屬性來改變UI的外觀與性能,分别是對象尺寸、對象文本以及對象顔色。為了保持應用的一緻性,讀者将會學習到如何使用全局資源檔案,它将有助于追蹤每一個屬性。

第13章針對的是想要通過Google Play的應用内購買來銷售應用的開發者。為了使用應用内購買,你需要擁有一個Google Play賬戶來連結到開發者賬戶。你所需的一切都位于Android SDK的SDK Manager中的Extras中。

本書的作者有4位,有人可能會想這會不會造成圖書風格的不一緻。不會的,在如何為開源的Android移動作業系統編寫應用的相關建議這個話題上,與既成事實的裝置類型與OS版本的碎片化不同,各位作者所給出的建議都是一樣的。大家在閱讀本書時不會感到風格的不一緻,各位作者的表達風格都是一樣的。

Android開發者手冊:使用Android SDK建構應用(第2版)一書值得任何一位開發者擁有。閱讀本書可以讓你追趕上移動開發的潮流,在需要幫助時你總能從書中找到答案。

關于本書作者

書評:使用Android SDK建構應用,第2版

Ronan 'Zero' Schwarz是OpenIntents的聯合創始人,這是一家專業的Android開發公司。Ronan擁有15年的程式設計經驗,涉足的領域非常廣泛,如增強現實、Web、機器人、業務系統以及各種不同的程式設計語言,如C、Java和彙編等。Ronan從2007年開始就從事Android平台開發了,并且建立了SplashPlay與Droidspray,在兩次Google Android開發者挑戰賽中他都是頂級選手。他目前在德國柏林的SinnerSchrader Mobile工作,是一名咨詢師。Ronan經常在歐洲的各大會議上發表演講,是一位傑出的Android開發者。

書評:使用Android SDK建構應用,第2版

Phil Dutson是ICON Health and Fitness的前端與移動主開發者。他曾為NordicTrack、ProForm、Freemotion、Sears、Costco及Sam’s Club等公司開發過項目并設計解決方案。在過去的幾年中,他曾為各種移動裝置編寫過程式,從第一個Palm Pilot 5000到現在的iOS與Android。Phil是jQuery, JQuery UI, and jQuery Mobile、Sams Teach Yourself jQuery Mobile in 24 hours以及Creating QR and Tag Codes3本圖書的作者。

書評:使用Android SDK建構應用,第2版

James Steele經常參加矽谷Android與新技術小組。他目前就職于Sensor Platforms,專注于提升使用者手勢與上下文資訊的價值,同時向開發者屏蔽掉傳感器硬體的複雜性和實體特性。在加入Sensor Platforms前,Steele博士在Spansion、Polaris Wireless與ArrayComm擔任進階管理職位,同時還在麻省理工學院與俄亥俄州立大學從事理論與粒子實體的研究工作。他于紐約州立大學斯托尼布魯克分校獲得理論實體博士學位。

書評:使用Android SDK建構應用,第2版

Nelson To擁有多年的Android研究與開發經驗。他對探索創新理念并通過Android應用實作其想法擁有巨大的熱情。他曾開發過多款Android應用,包括AOL AIM Android應用、為Logitech Revue Box開發過Google TV上首款高清視訊聊天Android應用(Vid)。他還在本地社群教授Android課程以幫助人們更加高效地學習Android,同時還投身于Android社群,為本地社群組織Android會議。

檢視英文原文:Book Review: Building Applications with the Android SDK, 2nd Edition

繼續閱讀