簡介
目前我負責開發(fā)的360 hola weather項目, 收到了360 OS的一個性能要求反饋, 一是要求apk size < 10 MB, 目前是12.2MB, 二是要求內存占用 < 42MB.
NimbleDroid 是美國哥倫比亞大學的博士創(chuàng)業(yè)團隊研發(fā)出來的分析Android app性能指標的系統(tǒng),分析的方式有靜態(tài)和動態(tài)兩種方式,
其中靜態(tài)分析可以分析出APK安裝包中大文件排行榜,各種知名SDK的大小以及占代碼整體的比例。
動態(tài)分析可以給出冷啟動時間, 列出block UI的具體方法, 內存占用, 以及Hot Methods, 從這些分析報告中, 可以定位出具體的優(yōu)化點.
使用方法其實很簡單, 只需要上傳你apk, 網(wǎng)站后臺會自動分析, 并給出直觀化的分析報告.
apk文件大小優(yōu)化
首先, 查看apk中的文件大小排行榜.
從中, 可以非常明顯的看到一些圖片png文件的使用是不當?shù)?
非常簡單的通過tinypng網(wǎng)站進行處理后, 就可以得到非常好的優(yōu)化效果.
初步優(yōu)化后的apk文件大小已經(jīng)滿足了360OS的要求.
這是從資源文件的角度入手, 從代碼角度優(yōu)化, 可以查看報告中的方法數(shù)報告. 從中可以快速定位出項目使用各個SDK的情況, 從中尋找優(yōu)化空間.
冷啟動優(yōu)化
這里給出了 8 個導致冷啟動慢的原因點. 優(yōu)秀app的冷啟動時間應該控制在2秒內, 目前是2.8秒, 超出了800毫秒.
Real Time 2.8 seconds0.80 seconds longer than max recommended time.
查看詳情報告, 可以看到block UI的具體方法名.
之前在瀏覽器部門, 閱讀chrome源碼, google用到了
Looper.myQueue().addIdleHandler(new MessageQueue.IdleHandler() {
@Override
public boolean queueIdle() {
return false;
}
});
來優(yōu)化頁面的啟動速度. 這里正好可以用到. 把一些方法抽取出來. 在頁面繪制后, 等到UI線程空閑的時候, 再去執(zhí)行這些耗時方法.
優(yōu)化后的結果
冷啟動優(yōu)化了300ms出來.
---DONE.---