随着移動平台的發展和其應用的不斷改善,品質成為決定成敗的關鍵。使用者要求他們選擇安裝的應用響應快、性能好,如果某個應用不能提供卓越的功能和穩定的使用者體驗,那這樣的應用注定會被很快解除安裝。
盡管現在Android智能手機和平闆電腦的運作速率越來越快,但開發者仍需牢記,應用的運作環境仍受到電池和處理器等諸多資源的限制。以下是如何為應用“瘦身”的十條建議,以便能在目前和以後的所有Android裝置都能運作出最佳效果。
1)首先要有良好的編碼習慣
一個優秀的開發者應該善于運用常識、完善的算法和标準設計模式。要有資源意識,打開了就要記得關閉,盡量做到晚擷取,早釋放。這些由來已久的編碼準則同樣适用Android應用開發,尤其是使用基礎裝置服務時。
2)讓阻塞操作遠離主UI線程
通過使用AsyncTask、線程、IntentService和自定義背景服務,保證應用的靈活性。使用加載工具簡化遊标等長時間加載資料的狀态管理。當有其他程式運作時,不能讓你的應用滞後或中止。
如果一個操作需要消耗較多時間和資源時,取消該操作,換成異步處理,這樣應用就能保持響應,使用者可以繼續各種操作。該方法适用磁盤讀寫、通路内容提供方、資料庫和網際網路,以及解析和其他需要花費較長時間的任務。
3)使用最新的Android SDK版本和API
使用Android平台的最新産品,保證你的應用緊跟Android的更新步伐。随着Android平台的不斷發展,部分功能可能被棄用或被更好的功能取代,核心API接收了bug修複和性能改進,新API有助于開發者編寫出更穩定的應用。要明白最佳的做法總是随着時間的推移而變,聰明的開發者應該總是站在整個平台的最前沿。
4)考慮使用StrictMode
從Android 2.3開始提供了一個新的類StrictMode,該類可以用于捕捉發生在應用程式主線程中耗時的磁盤、網絡通路或函數調用,可以幫助開發者改程序式,使主線程處理UI和動畫在磁盤讀寫和網絡操作時變得更平滑,避免主線程被阻塞。
5)釋出前禁用或盡量減少調試
如果開發周期較長,你很可能在應用中内置了一些日志或調試代碼,在釋出前確定這些功能已經最小化或完全禁用。
6)確定UI布局簡單優雅
簡單的螢幕不僅友善閱讀,還能加快加載速度。與其在一個單一螢幕上堆砌太多不必要的功能,不如花時間去開發優雅的使用者界面。簡單優雅的UI不僅能提高應用性能,還能提高使用者使用該應用時的效率。
7)根據目标裝置調整應用資源
為盡可能高效地被加載,需要根據具體裝置的配置調整相應資源,尤其是圖檔資源。為使應用封包件合理适用不同裝置,首先可隻添加運作該應用需要的核心資源,然後再根據具體裝置下載下傳相關内容。
8)使用Hierachy Viewer可視化調試工具
Hierachy Viewer能很友善地在開發者設計,調試和調整界面時,快速定位問題,解決問題,提高開發效率。
9)使用layoutopt進行布局優化
Layoutopt是一款簡單的指令行工具,可幫助找到不必要的控件嵌套以及縮減布局資源,進而使應用變得可能“苗條”。控件越少、布局層次越淺,性能就越好。
10)使用Traceview及其他Android工具進行分析
Android SDK随帶了很多用于應用分析的工具,其中最受歡迎的是Traceview,這款圖形工具可以幫助調試和找到應用中的性能瓶頸。
結語
提升Android應用性能的方法有很多,有些需要使用特定的算法,有些依賴切實可行的調試和性能監測技術。幸運的是,Android平台随帶了衆多免費的實用工具,可以幫助跟蹤和解決應用程式中的性能問題。
精彩博文推薦閱讀:
不要做浮躁的軟體工程師 成為Java高手的25個學習目标
為程式開發人員量身定制的12個目标 程式員程式設計技術迅速提高的終極攻略
技術精英談IT程式員的出路在哪裡 印度和中國程式員的差別
長時間操作電腦需要養成的幾個好習慣 技術開發人員為什麼會無奈苦逼?
程式員程式設計技術迅速提高的終極攻略 程式員發展應該盡早明白13個道理
5年程式員人生的點點滴滴 程式員也要養生
高效程式員的40個好習慣和行為方式 開發人員的7大壞毛病
優秀程式員的幾個标志 軟體開發人員猛如虎
給Android應用開發者的十個建議 Android防止記憶體溢出淺析
Android 重要基本開發規範 android 如何防止代碼被反編譯
android資料存儲與通路之使用SD卡 android Intent機制詳解
android 之service實作電話監聽并錄音
深度詳解Android 4.1果凍豆11個新特性
71道經典Android面試題和答案--重要知識點都涉及到了
高校應屆畢業生“IT業”收入最高,Android技術最熱門
成為“Android高手”需要經過的六個階段和6個境界
成為Android高手必須掌握的28大項内容和10個建議
轉載于:https://www.cnblogs.com/javaTest/archive/2012/07/09/2589229.html