1. 程式人生 > >Android 效能優化總結和彙總

Android 效能優化總結和彙總

對於Android開發者而言,開發出一個應用程式已經不是很難的問題。但是,如果要想開發出優質的應用或者程式就需要知道如何優化應用以及對程式效能優化的一些知識。那麼如何去優化程式呢?安卓框架已經提供了很好的工具來幫助開發者做這件事情。廢話少說,進入正題。

A.StrictMode
Android StrictMode意思為嚴格模式,是用來檢測程式中違例情況的開發者工具。最常用的場景就是檢測主執行緒中本地磁碟和網路讀寫等耗時的操作。

StrictMode原理:
其實StrictMode實現原理也比較簡單,以IO操作為例,主要是通過在open,read,write,close時進行監控。libcore.io.BlockGuardOs檔案就是監控的地方。

如何使用

**
onCreate(){
    StrictMode.setThreadPolicy(newStrictMode.ThreadPolicy.Builder()
        .detectAll().build());
    StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
        .detectAll().build());
    ...
}
**

在Activity, Application的onCreate中新增上述方法,即可。

嚴格模式主要檢測兩大問題,一個是執行緒策略,即TreadPolicy,另一個是VM策略,即VmPolicy。
ThreadPolicy 執行緒策略檢測的內容:


自定義的耗時呼叫  detectCustomSlowCalls()
磁碟讀取操作    detectDiskReads()
磁碟寫入操作    detectDiskWrites()
網路操作      detectNetwork()

VmPolicy 虛擬機器策略檢測的內容有
Activity洩露 使用detectActivityLeaks()開啟
未關閉的Closable物件洩露 使用detectLeakedClosableObjects()開啟
洩露的Sqlite物件 使用detectLeakedSqlLiteObjects()開啟
檢測例項數量 使用setClassInstanceLimit()開啟

B.Debug工具
在需要開始跟蹤的地方加入 Debug.startMethodTracing(“file path”);
最終在停止除錯的地方加入 Debug.stopMethodTracing();
最終在sdcard上生成的debug檔案我們可以用sdk/tools中的traceview來檢視執行的結果。
但是,這兩個只是Debug中的兩個方法,還有其他很多方法可以從原始碼中看到,例如:

    **
    ...
    int getThreadGcInvocationCount()
    void resetThreadGcInvocationCount()
    void resetAllCounts()
    ...
**

上述兩種方法,直接可以寫在程式碼中作為程式效能的監控,如果你要看更直觀的一些效能資訊可以通過DDMS工具的monitor進行資料的實時監控。至於使用什麼樣的方式,我覺得可以根據實際情況而定。如果後續發現還有其他的優化方式,我會繼續備註。

網路優化
網路優化主要體現在裝置和伺服器之間的資訊互動的過程,由於網路情況的不確定性,效能開銷和網路請求的時間過長的情況。我們需要儘可能要減少網路互動的次數。那麼,怎麼樣去合理利用網路請求呢?
1.分優先順序,延遲部分請求。
2.合併請求,如果兩次請求的資料可以通過一次請求拿到,那麼就可以合併處理。
3.本地快取資料,來減少網路請求。
4.減小請求資料的大小,適當的進行壓縮。