天天看點

android app啟動速度,Android性能優化(一)APP啟動速度優化

引言

通常來講,咱們都會将本身的産品與同類的産品進行個比對,不可避免的會去作些性能優化,以達到賽過其餘産品的優點。是以,今天咱們就來說講性能優化的方方面面。css

一般咱們所說的性能優化,會從如下幾個方面入手:

1. APP啟動速度優化

2. APP UI流暢度優化

3. 記憶體優化

4. APP瘦身

5. 電量優化java

APP啟動速度優化

(1)初識啟動方式

APP啟動的方式分為3種:;冷啟動、熱啟動、溫啟動。

-冷啟動:應用程式從頭開始,須要作大量的工做,耗費的時間最多。

-熱啟動:系統會把你的活動放在前台,活動有駐留在記憶體中,好比按了home鍵。相對于冷啟動,開銷較低。

-溫啟動:使用者退出應用程式,随後又從新啟動,可是活動的程序是有駐留在背景的,好比按了back鍵退出應用。android

(2)為何白屏?啟動慢?

一、Application的onCreate流程,通常來講,在這個方法會進行大量的通用元件的初始化工做;

二、Activity的onCreate流程,布局太過複雜,緻使UI布局渲染耗時,影響啟動性能。

(3)解決辦法

第一種方法:主題切換。這是治标不治本的問題,隻是改善了互動的友好性。

主題theme_bg:其中android:opacity=”opaque”參數是為了防止在啟動的時候出現背景的閃爍。web

android:opacity="opaque">

android:src="@mipmap/ic_launcher" />

android:src="@drawable/launch_screens" />

android:src="@mipmap/ic_launcher" />

樣式style:資料庫

在manifest中,将啟動頁的主題設定為咱們定義的主題AppTheme.Launcher:緩存

android:theme="@style/AppTheme.Launcher">

在MainActivity中,切換回原來的主題:性能優化

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//切換回原來的主題,必須在setContentView前調用

setTheme(R.style.AppTheme);

setContentView(R.layout.activity_main);

}

第二種方法:異步加載、延遲加載、多程序時按照程序區分進行一些初始化工做等。

主要有如下幾種狀況須要延遲加載:markdown

該段文本轉載自:http://www.jianshu.com/p/f5514b1a826c

1.資料庫及IO操做都移到工做線程,而且設定線程優先級為THREAD_PRIORITY_BACKGROUND,這樣工做線程最多能擷取到10%的時間片,優先保證主線程執行。

2.流程梳理,延後執行;

實際上,這一步對項目啟動加速最有效果。經過流程梳理發現部分流程調用時機偏早、失誤等,例如:

更新等操做無需在首屏還沒有展現就調用,形成資源競争;

調用了IOS為了規避稽核而作的開關,形成網絡請求密集;

自有統計在Application的調用裡建立數量固定為5的線程池,形成資源競争,在上圖traceview功能說明圖中最後一行能夠看到編号12執行5次,耗時排名前列;此處線程池的建立是必要但能夠延後的。

修改廣告閃屏邏輯為下次生效。

3.其它優化;

去掉無用但被執行的老代碼;

去掉開發階段使用但線上被執行的代碼;

去掉重複邏輯執行代碼;

去掉調用三方SDK裡或者Demo裡的多餘代碼;

資訊緩存,經常使用資訊隻在第一次擷取,以後從緩存中取;

項目是多程序架構,隻在主程序執行Application的onCreate();

具體操做:在啟動頁Activity或ManiActivity的onCreate中進行延遲操做網絡

getWindow().getDecorView().post(new Runnable() {

@Override

public void run() {

myHandler.post(mLoadingRunnable);

}

});

相關連接配接:

架構