從動手寫這本書,到正式出版,曆經了兩年多的時光。其間,由於工作壓力,有一年的時間隻字未添,有很多章節不斷的易稿整理補充新的內容,在幾多糾結後總算是能面世見人。兩年多前,Android開發還是一個比較新鮮的領域,好書難覓,任何複雜一些的架構機制和實現模式,都需要摸爬滾打自行揣摩。於是決意要寫一本書,把自己從事Android開發的一些經驗總結,和對源碼的學習瞭解,都整理出來。最早我給這本書的名字,與我部落格上的一些文章同名,名曰『深入理解Android』,目標是把Android的一些核心機制的實現以及開發中常遇到的問題都剖析清楚,不僅能把底層實現說透了,更重要的是能夠和實際開發關聯的更為緊密。
我不希望這本書在講解某項功能時有特別完整的例子,而只是提供經過實戰考驗的程式碼片段,因為我覺得,完整的例子就像一個裝修完好的房子,會把一些模式和情境限定的太死板,約束了閱讀時的思維,而程式碼片段就像設計精巧的樂高積木,可以有更豐富的可能性。我也不想在寫底層邏輯時直接大段大段的貼代碼,而是把其中邏輯整理成更為清晰的文字和圖表,這樣才能使得略顯枯燥的內容變得更為生動活潑易於理解。此外,我也不想把這本書做成面面俱到的手冊,只是把我覺得重要的核心機制和真實遇到過的內容呈現出來即可,因為這些內容是我理解的最好最深刻,也是我最能協助到其他人的地方。
但隨著寫作的深入,我發現我對“書”的理解還是太淺薄,停留在了“部落格”層面。作為一本介紹機理和實現的書,完整性還是很重要的,因為書的讀者不是像博文讀者,是通過搜尋某個小問題來閱讀的,而是需要一個更為整體的學習。所以,在寫作期間,我也不斷的對一些我原來瞭解的不夠清楚的地方,不斷學習和實踐,把一些我原本認為不太重要的細節也一挖再挖以求全面,文字上,也把囉嗦花哨的部分全部略去,力求簡單明了偶爾有趣。這些工作耗費了更多的精力和時間,使的出版日期不斷跳票,不過能夠使得整本書的內容更為完整易讀,還是非常令人開心的事情。
在出版前,書名最終更改為了『Android開發精要』,主要原因是和傳統的『深入理解XXX』書籍相比,這本書看上去並沒有那麼深入,沒有對具體代碼細節的詮釋,沒有對一些特別底層的內容進行剖析。而精要二字,一方面指的是“精華”,即Android的一些核心機制,比如進程託管,組件模型之類的;另一方面,指的是“要點”,即一些實際經驗的整理,比如介面構造、大記憶體控制,云云。我覺得這個書名雖然看著很冷僻,但也使得這本書更貼近它的讀者群,因為我本就是想為普通Android應用開發人員寫一些東西。
時至今日,Android開發儼然成了最熱門的工種之一,相關書籍多如牛毛,方方面面涵蓋甚廣。而這本書,也不是非常能契合我最早的預期,由於工作壓力,時間、精力、能力都十分有限,實在沒有辦法做到盡善盡美,書中還是有不少地方,我覺得寫得並不是很透。即便如此,我還是相信這本書能夠協助到不少人,這種自信來自於平常的工作中,因為時常有同學遇到問題的時候,我都可以說:“這問題我書裡有寫,在某某章節,可以去看看”。