Android應(yīng)用性能優(yōu)化

出版時間:2012-10  出版社:人民郵電出版社  作者:[法] Hervé Guihot  頁數(shù):226  字數(shù):355000  譯者:白龍  
Tag標簽:無  

前言

Android已經(jīng)融入了尋常百姓的生活中。當今世界,手機正從功能時代進化到智能時代,同時又誕生了令人愛不釋手的平板電腦。目前,應(yīng)用程序開發(fā)者的可選擇平臺主要就是Android和iOS。Android降低了甚至可以說是打破了移動開發(fā)的門檻,應(yīng)用程序開發(fā)者編寫Android應(yīng)用程序只需要一臺計算機就夠了(當然還要有一些編程知識)。工具都是免費的,幾乎每個人都能寫出數(shù)百萬人會用的應(yīng)用。Android可以運行在各種設(shè)備上,從平板到電視。開發(fā)者關(guān)鍵要做的就是保證應(yīng)用可以順利地在這些設(shè)備上運行,而且比競爭對手的還好。對應(yīng)用程序開發(fā)人員而言,Android開發(fā)的門檻已經(jīng)很低了,你會發(fā)現(xiàn),在許多情況下,自己不過是想要在日益增長的Android應(yīng)用程序市場上分一杯羹而已。賴以謀生、實現(xiàn)明星夢,或者只是想使世界變得更美好……無論你編寫程序所為何求,性能問題都是其中的關(guān)鍵。要想閱讀本書,最好能事先對Android應(yīng)用程序開發(fā)基礎(chǔ)有所了解,由此方能利用本書的妙訣良方讓程序跑得更快。盡管借助Android工具和在線文檔可以很容易地創(chuàng)建應(yīng)用程序,但性能優(yōu)化(有時簡直更像是一門藝術(shù)而不是科學)卻無定法可循。不管要優(yōu)化的程序是已有的,還是從頭編寫的。本書的目的就是要幫你找到簡便的優(yōu)化方法,以便使程序在幾乎所有Android設(shè)備上都能取得不錯的性能。Android允許開發(fā)人員使用Java、C/C++,甚至匯編語言,所以,無論是更好地利用CPU特性,還是針對特定問題使用合適的編程語言,相信你可以用多種不同的方法來優(yōu)化性能。第1章 優(yōu)化Java代碼。毫無疑問,你的第一個Android應(yīng)用程序基本都是用Java開發(fā)的。在這一章,你會了解到,選擇算法要比實現(xiàn)算法更重要。你還將學習如何利用簡單的技術(shù)(如緩存和減少內(nèi)存分配)來極大地優(yōu)化應(yīng)用程序。此外,你還將學習讓應(yīng)用程序隨時能夠保持響應(yīng)的方法,這是一個非常重要的性能指標。此外還將介紹高效使用數(shù)據(jù)庫的方法。第2章 更進一步(或者說更底層,得看談話對象)領(lǐng)略Android NDK。盡管自從Android 2.2以后Java代碼可以即時編譯為機器碼,但某些方法用C代碼實現(xiàn)可以獲得更棒的結(jié)果。NDK還可以讓你輕松地將現(xiàn)有代碼移植到Android,而無需用Java重寫一遍。第3章 底層的匯編語言。大多數(shù)應(yīng)用程序開發(fā)很少用到匯編語言,但匯編語言能充分利用各個平臺的專有指令集。雖然這會增加復(fù)雜度和維護成本,但卻是非常強大的優(yōu)化秘訣。匯編代碼通常僅限于應(yīng)用程序的某些特定部分,但不應(yīng)忽略它的優(yōu)點,仔細而有針對性的優(yōu)化可以取得巨大成效。第4章 探討如何使用更少的內(nèi)存來提高性能。除了學習在代碼中使用較少內(nèi)存的簡單方法,你還將了解到,由于CPU的設(shè)計方式,內(nèi)存分配方式和內(nèi)存訪問也會對性能有直接影響。第5章 如何在Android應(yīng)用程序中使用多線程,以便保持隨時響應(yīng),為越來越多可以同時運行多線程的Android設(shè)備提升性能。第6章 測量應(yīng)用程序性能的基礎(chǔ)知識。除了可以用API來測量時間外,一些Android工具還可以方便地查看應(yīng)用程序執(zhí)行時間耗費的具體情況。第7章 確保應(yīng)用程序合理使用電量的一些方法。許多Android設(shè)備都由電池供電,因而節(jié)電非常重要,沒人愿意使用過于耗電的應(yīng)用。通過本章所述方法,可以不必犧牲Android程序的特性就能最大限度地減少功耗。第8章 一些完善應(yīng)用程序布局和優(yōu)化OpenGL渲染的基本技術(shù)。第9章 RenderScript。它是Honeycomb引入的一個相對較新的Android組件。RenderScript為性能而生,從首次發(fā)布以來已經(jīng)有不少改進。本章介紹如何在應(yīng)用程序中使用RenderScript,順便學習RenderScript定義的許多API。我希望你喜歡上這本書,并在里面找到許多有用的技巧。你會發(fā)現(xiàn),很多技術(shù)不獨適用于Android,還可以用在很多其他平臺上,例如iOS。就個人而言,我偏好匯編語言,希望能借著Android平臺的快速發(fā)展以及其對NDK匯編語言的支持,能使Android吸引到更多的開發(fā)者。至少,他們可以學到一門新技術(shù)。但是,良好的設(shè)計和算法常??梢詽M足所有性能優(yōu)化的需求,這才是關(guān)鍵。祝你好運,我期待著你的Android應(yīng)用程序!

內(nèi)容概要

  《Android應(yīng)用性能優(yōu)化》主要介紹如何調(diào)優(yōu)Android應(yīng)用,以使應(yīng)用更健壯并提高其執(zhí)行速度。內(nèi)容包括用Java、NDK優(yōu)化應(yīng)用,充分利用內(nèi)存以使性能最大化,盡最大可能節(jié)省電量,何時及如何使用多線程,如何使用基準問題測試代碼,如何優(yōu)化OpenGL代碼和使用Renderscript等?!禔ndroid應(yīng)用性能優(yōu)化》面向熟悉Java和Android
SDK的想要進一步學習如何用本地代碼優(yōu)化應(yīng)用性能的Android開發(fā)人員。

作者簡介

  Hervé Guihot
目前在聯(lián)發(fā)科技公司(MTK,www,mediatek.com)擔任軟件工程經(jīng)理。他有十多年的嵌入式系統(tǒng)開發(fā)工作經(jīng)驗,主要與數(shù)字電視技術(shù)相關(guān)。目前正在研究如何將Android引入基于ARM的數(shù)字家庭平臺。

書籍目錄

第1章 Java代碼優(yōu)化 
1.1 Android如何執(zhí)行代碼 
1.2 優(yōu)化斐波納契數(shù)列 
1.2.1 從遞歸到迭代 
1.2.2 BigInteger 
1.3 緩存結(jié)果 
1.4 API等級 
1.5 數(shù)據(jù)結(jié)構(gòu) 
1.6 響應(yīng)能力 
1.6.1 推遲初始化 
1.6.2 StrictMode 
1.7 SQLite 
1.7.1 SQLite語句 
1.7.2 事務(wù) 
1.7.3 查詢 
1.8 總結(jié) 
第2章 NDK入門 
2.1 NDK里有什么 
2.2 混合使用Java和C/C++代碼 
2.2.1 聲明本地方法 
2.2.2 實現(xiàn)JNI粘合層 
2.2.3 創(chuàng)建Makefile 
2.2.4 實現(xiàn)本地函數(shù) 
2.2.5 編譯本地庫 
2.2.6 加載本地庫 
2.3 Application.mk 
2.3.1 為(幾乎)所有設(shè)備優(yōu)化 
2.3.2 支持所有設(shè)備 
2.4 Android.mk 
2.5 使用C/C++改進性能 
2.6 本地Acitivity 
2.6.1 構(gòu)建缺失的庫 
2.6.2 替代方案 
2.7 總結(jié) 
第3章 NDK進階 
3.1 匯編 
3.1.1 最大公約數(shù) 
3.1.2 色彩轉(zhuǎn)換 
3.1.3 并行計算平均值 
3.1.4 ARM指令 
3.1.5 ARM NEON 
3.1.6 CPU特性 
3.2 C擴展 
3.2.1 內(nèi)置函數(shù) 
3.2.2 向量指令 
3.3 技巧 
3.3.1 內(nèi)聯(lián)函數(shù) 
3.3.2 循環(huán)展開 
3.3.3 內(nèi)存預(yù)讀取 
3.3.4 用LDM/STM替換LDR/STD 
3.4 總結(jié) 
第4章 高效使用內(nèi)存 
4.1 說說內(nèi)存 
4.2 數(shù)據(jù)類型 
4.2.1 值的比較 
4.2.2 其他算法 
4.2.3 數(shù)組排序 
4.2.4 定義自己的類 
4.3 訪問內(nèi)存 
4.4 排布數(shù)據(jù) 
4.5 垃圾收集 
4.5.1 內(nèi)存泄漏 
4.5.2 引用 
4.6 API 
4.7 內(nèi)存少的時候 
4.8 總結(jié) 
第5章 多線程和同步 
5.1 線程 
5.2 AsyncTask 
5.3 Handler和Looper 
5.3.1 Handler 
5.3.2 Looper 
5.4 數(shù)據(jù)類型 
5.5 并發(fā) 
5.6 多核 
5.6.1 為多核修改算法 
5.6.2 使用并發(fā)緩存 
5.7 Activity生命周期 
5.7.1 傳遞信息 
5.7.2 記住狀態(tài) 
5.8 總結(jié) 
第6章 性能評測和剖析 
6.1 時間測量 
6.1.1 System.nanoTime() 
6.1.2 Debug.threadCpuTimeNanos() 
6.2 方法調(diào)用跟蹤 
6.2.1 Debug.startMethodTracing() 
6.2.2 使用Traceview工具 
6.2.3 DDMS中的Traceview 
6.2.4 本地方法跟蹤 
6.3 日志 
6.4 總結(jié) 
第7章 延長電池續(xù)航時間 
7.1 電池 
7.2 禁用廣播接收器 
7.3 網(wǎng)絡(luò) 
7.3.1 后臺數(shù)據(jù) 
7.3.2 數(shù)據(jù)傳輸 
7.4 位置 
7.4.1 注銷監(jiān)聽器 
7.4.2 更新頻率 
7.4.3 多種位置服務(wù) 
7.4.4 篩選定位服務(wù) 
7.4.5 最后已知位置 
7.5 傳感器 
7.6 圖形 
7.7 提醒 
7.8 WakeLock 
7.9 總結(jié) 
第8章 圖形 
8.1 布局優(yōu)化 
8.1.1 相對布局 
8.1.2 合并布局 
8.1.3 重用布局 
8.1.4 ViewStub 
8.2 布局工具 
8.2.1 層級視圖 
8.2.2 layoutopt 
8.3 OpenGL ES 
8.3.1 擴展 
8.3.2 紋理壓縮 
8.3.3 Mipmap 
8.3.4 多APK 
8.3.5 著色 
8.3.6 場景復(fù)雜性 
8.3.7 消隱 
8.3.8 渲染模式 
8.3.9 功耗管理 
8.4 總結(jié) 
第9章 RenderScript 
9.1 概覽 
9.2 Hello World 
9.3 Hello Rendering 
9.3.1 創(chuàng)建渲染腳本 
9.3.2 創(chuàng)建RenderScriptGL Context 
9.3.3 展開RSSurfaceView 
9.3.4 設(shè)置內(nèi)容視圖 
9.4 在腳本中添加變量 
9.5 HelloCompute 
9.5.1 Allocation 
9.5.2 rsForEach 
9.5.3 性能 
9.6 自帶的RenderScript API 
9.6.1 rs_types.rsh 
9.6.2 rs_core.rsh 
9.6.3 rs_cl.rsh 
9.6.4 rs_math.rsh 
9.6.5 rs_graphics.rsh 
9.6.6 rs_time.rsh 
9.6.7 rs_atomic.rsh 
9.7 RenderScript與NDK對比 
9.8 總結(jié) 

章節(jié)摘錄

版權(quán)頁:   插圖:   Android Market可以讓應(yīng)用發(fā)布多個APK,每個針對不同的配置。例如,可以讓一個APK只使用ETC1紋理,另一個用PVRTC紋理——即為使用PowervR的Android設(shè)備優(yōu)化。這些APK共享相同的AndroidMarket列表,AndroidMarket會為每個設(shè)備仔細選擇適合的APK。用戶不必擔心下載并安裝的APK是否正確,這一切是自動和透明的。 注意并非所有的Android應(yīng)用商店都支持此功能,所以如果你打算分發(fā)應(yīng)用到多個商店,還是盡可能用適合所有設(shè)備的單一APK吧。 當然,紋理可能不是你需要發(fā)布多個APK的唯一原因。例如,你可能針對舊設(shè)備發(fā)布小的APK,對較新的設(shè)備發(fā)布帶有更多功能且更大的APK。雖然可以使用多個APK,但它會使發(fā)布流程和維護變得復(fù)雜,因此,建議你盡可能嘗試發(fā)布單一APK。 8.3.5著色 OpenGL Es 2.o支持OpenGL Es著色語言(shadillg Language),以取代OpenGL ES 1.x中的固定變換函數(shù)和分散的管線(pipeline)。這種語言基于C,可以讓你編寫自己的頂點(venex)和片段(fragment)著色來控制OpenGL管線。 像C程序一樣,著色器可以非常簡單,也可極其復(fù)雜。雖然沒有必須遵循的單一規(guī)則,但你應(yīng)該盡可能減少著色器的復(fù)雜性,這會非常影響性能。 8.3.6場景復(fù)雜性 顯然,渲染復(fù)雜的場景比簡單的要花的時間長。一個提高幀速率的方法是簡化要渲染的場景,同時保持可接受的視覺質(zhì)量。例如,對于可看到的紋理,較遠的物體可以減少細節(jié),使用更少的三角形。簡單的對象使用的內(nèi)存和帶寬較少。 8.3.7 消隱 盡管GPU擅長幾何運算,并能確定要渲染的物體,但應(yīng)用應(yīng)該盡力消隱(Culling)視線以外的物體,這樣就不會向那些因為不可見而要丟棄的對象發(fā)送繪制命令。 消隱對象(甚至三角形)有許多方法,這些已超出本書的范圍,幀速率低于預(yù)期可能是考慮不周的消隱方法造成的。例如,可以快速消除攝像機(camera)后面的物體。 注意大多情況下你可以啟用背面消隱(Backface Culling),這將不會渲染對象背面的三角形。

媒體關(guān)注與評論

“本書詳細介紹了優(yōu)化Android代碼的各種規(guī)則和技巧,揭開了Android和JAVA核心數(shù)據(jù)結(jié)構(gòu)的神秘面紗。最值得稱道的是,作者展示了使用緩存、SQLite以及延長電池使用壽命的技術(shù),這是每個嚴謹?shù)拈_發(fā)人員都必須要掌握的內(nèi)容?!薄W(wǎng)友評論“市面上這種書并不多見!我想把這本書推薦給所有Android高級程序員?!薄W(wǎng)友評論

編輯推薦

Android應(yīng)用開發(fā)者經(jīng)常要想盡辦法來提升程序性能。Herve Guihot專著的《Android應(yīng)用性能優(yōu)化》主要介紹如何快速高效地優(yōu)化應(yīng)用,讓應(yīng)用變得穩(wěn)定高效。你將學會利用Android SDK和NDK來混合或單獨使用Java、C/C++來開發(fā)應(yīng)用。    把Herve Guihot專著的《Android應(yīng)用性能優(yōu)化》的內(nèi)容學以致用,你的編程技術(shù)就會得到關(guān)鍵性的提升,寫出的應(yīng)用就會更為健壯高效,從而廣受用戶好評,并最終獲得成功。

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    Android應(yīng)用性能優(yōu)化 PDF格式下載


用戶評論 (總計85條)

 
 

  •   如:運行時是Dalvik碼,而非Java虛擬機;Classes.dex文件的使用;Android2.2引入實時編譯器。并給出了用戶體驗的實測標準。如:用戶的“馬上”時長少于100毫秒,這樣才有順暢的體驗。引入了重要的概念:微小優(yōu)化。還涉及設(shè)計模式對性能優(yōu)化的影響。
  •   Android應(yīng)用,不論是什么應(yīng)用,都要用戶體驗好才能成為好的應(yīng)用。這本書對開發(fā)者來說,很有用。
  •   對應(yīng)用的性能優(yōu)化方面有很大的幫助,不是一開始就告訴你最優(yōu)化的代碼寫法,而是根據(jù)需求進行了一步步的優(yōu)化,非常好。
  •   性能優(yōu)化,能夠提高代碼水平,不錯。
  •   安卓系統(tǒng)運行java程序,很多軟件性能很差,這個可以幫忙優(yōu)化。
  •   好。性能優(yōu)化的
  •   還不錯,正在看,學到不少優(yōu)化的東西
  •   開發(fā)必備。慢慢看
  •   解決了困擾多時的內(nèi)存問題
  •   正在看,以后再評價內(nèi)容吧
  •   包裝還好,發(fā)貨速度一般
  •   這本書從印刷,排版,送貨速度等各種方面來說,除了看不懂以外,其它方面都挺好的。
  •   書寫的很好,舉一反三,跟其他書不一樣!
  •   但是不適合初級人員看
  •   大體的翻閱了一下,覺得自己的學習一段時間,才能看這本書
  •   都是專業(yè)方面的書籍,內(nèi)容不錯,紙張質(zhì)量也比較好……
  •   整體還行,就是內(nèi)容有點雜,而且部分章節(jié)難度比較大
  •   內(nèi)容比國內(nèi)的強多了,不是抄襲的那種
  •   書的紙質(zhì)很好,內(nèi)容有的地方講的太深,涉及匯編,c++,沒有基礎(chǔ),看了也白看。
  •   雖然有很多內(nèi)容是我知道的,但同時也有很多內(nèi)容是我所部知道的,呵呵
  •   很不錯的一本書,推薦購買,講的很有針對性,內(nèi)容也比較深入。
  •   根號的書 看了目錄就決定買了
  •   還不錯嘛呢OK
  •   涉及算法,c,匯編等
  •   看了第一章,收獲不少,繼續(xù)看……
  •   這本書是我認為還很不錯的。
  •   結(jié)構(gòu)緊湊,條例清晰,擴展知識面。
  •   喜歡,慢慢斟酌
  •   這個很有用的,可以買來看看。
  •   雖然還沒開始讀,但看了第一章后覺得挺不錯的
  •   需要有一定的基礎(chǔ),需要慢慢細嚼...
  •   適合進階,匯編那塊有點狠呀。
  •   代購,據(jù)說不錯,支持一下~
  •   還沒看~目錄還行
  •   書本不錯,贊一個
  •   希望物有所值~
  •   感覺不錯,可以稍作提高
  •   還沒看 這個系列應(yīng)該還不錯
  •   仔細研讀一下,剛看了目錄
  •   寫得挺好,受到很大觸發(fā)。翻譯得挺好,挺用心負責。
  •   當當服務(wù)真不錯,每次都及時送貨,又便宜。
  •   很好,很強大。有點難
  •   對應(yīng)用的性能的介紹和優(yōu)化講解??梢钥纯矗档靡豢?/li>
  •   知識點簡略,適合有一定經(jīng)驗的開發(fā)/研發(fā)人員
  •   對于學習NDK編程很有幫助
  •   送貨很快,書本的印刷都還好,主要是書中的內(nèi)容真的不怎么樣!太簡單了些!講解相對淺顯,不夠深入!
  •   挺好的 不過就是書里面的內(nèi)容有一些難度 理解起來會吃力點` 有些地方?jīng)]講得那么細`
  •   書還行,實用性一般,內(nèi)容過于簡略。
  •   此書寫的時間有點兒早了,還停留在雙核cpu時代
  •   偏向c,匯編了,對搞低層有用
  •   相對實用
  •   沒有太深入的東西,不過還可以看看
  •   經(jīng)典不需要多說了哦
  •   封面有泥沙
  •   本來下了e文電子版的。但是發(fā)現(xiàn)中文版出版了。。于是買下來看看
  •   雖然還沒看。先來個評價吧。
  •   正品的東西就是不一樣
  •   價格不扉啊
  •   一般般了,有的地方感到很啰嗦沒有java性能優(yōu)化講的直接
  •   挺好的,值得一閱 ~
  •   書很一般,作者在開頭已經(jīng)說明了~
  •   看了第一章,消遞歸,沒什么新意。希望后面章節(jié)能給力點。
  •   老外寫的,看看怎么樣
  •   書好,物流慢!
  •   我是一名專職的手軟開發(fā)工程師,主公安卓方向,這本書我粗略的掃了一下目錄即決定夠買這本,買后發(fā)現(xiàn)這本書寫的非常精彩,尤其是對于ndk這塊有入門需求的人來說真的很好,里面很多的實驗技巧及優(yōu)化方法是國內(nèi)論壇上很少或幾乎沒有提及的部分,看過此書后,我就著手在我的程序中加入了不少優(yōu)化方法,作為專業(yè)人員推薦后者讀一下此書,另,初學者建議入行半年后再看此書,否則有很多細節(jié)會有點吃力。
  •   好書,但是印刷質(zhì)量太差,像盜版的
  •   這本書很實用,還沒有看完,部分內(nèi)容偏向硬件
  •   剖析Android 一些中低層的知識,不止停留在教方法上,還是思想重要
  •   對于開發(fā)LINUX又有一個新的曾欣和思考!
  •   不錯,內(nèi)容很詳細,看過之后 收獲很大
  •   看了一些,給了不少優(yōu)化建議,但還需要根據(jù)具體情況分析
  •   這本書很實用,內(nèi)容相當好。
  •   該書對我有些幫助,但是有些東西還不太理解,我再多看幾遍理解理解。
  •   有點失望,本來以為是很好的書呢!
  •   內(nèi)容相當好,估計以后會需要重新來讀。不過可惜的讀完之后發(fā)現(xiàn)對我這種初級程序員沒什么用,現(xiàn)在可能沒有什么幫助。書里是在用代碼的可維護性來換取性能的優(yōu)化,我可是想都不敢想,寫代碼本來就不怎么樣的我要是這樣弄估計會被boss罵死的,以后可能會需要這本書。推薦給需要的同志,內(nèi)容還是確實不錯,和其他android的書沒有重復(fù)的內(nèi)容。
  •   主要看中它的NDK的性能優(yōu)化,對于NDK入門還是很好的一本書
  •   好書,但是不適合初學者,適合有一定經(jīng)驗的開發(fā)者
  •   東西不錯,就是內(nèi)容有點少,基本上整本書就可以用一頁紙寫出個《Android應(yīng)用性能優(yōu)化攻略》出來(純粹攻略不寫分析過程和原理)。書的內(nèi)容主要是在分析,思路清晰,讀起來非常流暢。
  •   首先,這本書沒有包膜,打開檢查時發(fā)現(xiàn)有2頁角不完整,看了一下不影響閱讀也就算了,不知道是出版商還是亞馬遜的問題,總之質(zhì)檢方面是有缺陷的... 閱讀更多
  •   比較喜歡ndk的部分
  •   太薄了 不是很深入
  •   很薄的一本書但是內(nèi)容不簡單
  •   還不錯,送貨也還比較快
  •   專門講優(yōu)化的
  •   Android應(yīng)用性能優(yōu)化
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7