筆記 APP啟動優化

2021-09-22 18:28:49 字數 1627 閱讀 7504

手機開機(開啟電源),引導晶元會啟動乙個引導程式bootloader,它負責把linux系統拉起來,系統又會做很多的設定,比如目錄的載入,網路的配置等等,其中它還會找乙個init.rc檔案。這個檔案會啟動乙個init程序,這個程序的程序號是1,也是系統啟動的第乙個程序。這個程序又會啟動乙個孵化器(zygote),這個孵化器的特點是生成乙個和自己一樣的程序,它還能建立jvm虛擬機器,它孵化完成之後還會啟動乙個叫systerserver的服務,還會開啟乙個binder的執行緒池,還會開啟乙個systerservicemanager。(binder是程序之間通訊的)

systerserver和systerservicemanager的合作可以開啟很多服務,比如activitymanagerservice、windowmanagerservice、packagemanagerservice、cameraservice、sensorservice等等

/**

*/running activities (most recent first):

public void onclick(view v)
解決方案一:利用背景圖替代黑白屏,京東和**就是這樣做的。作為廣告

這種事只有啟動的那個activity中主題中需要使用,其他的不需要只用

//主題屬性增加,當然**中也能這只theme

true
解決方案三:把黑白屏背景設定為空,在取消預覽

@null

true

將需要分析的**的開始部分和結束部分載入除錯語句。

debug.startmethodtracing(tracepath);//tracepat**件儲存的路徑

//需要除錯的語句

debug.stopmethodtracing();

執行這段**,執行結束只有,通過adb pull命令把檔案拉取到本地。

再把對應的***.trace檔案拉倒as中分析。

通過觀察分析出那些方法執行的時間比較長,就需要優化。

優化方案:

2019-05-15 16:11:00.309 1394-2281/? i/activitymanager: displayed com.***xx.***xx.collection/.feature.test.audiotestactivity: +1s213ms
檢視activity的啟動時間,命令:adb shell am start -w 包名/全類名

starting: intent

warning: activity not started, its current task has been brought to the front

status: ok

activity: com.sunyard.caafc.collection/.feature.test.audiotestactivity

thistime: 6240

totaltime: 6240

waittime: 6334

complete

adb shell ps 檢視程序

App啟動優化 Podfile

新增pod,使用use frameworks 新增pod,不使用use frameworks 區別 靜態庫的優點 1.在啟動時靜態庫dylib loading time速度明顯提公升。2.通過ipa大小對比發現,靜態庫比動態庫ipa大小有所縮小。靜態庫 靜態鏈結庫 a 在編譯時會將庫copy乙份到目...

App效能優化 冷 熱啟動

通常來說,在安卓中應用的啟動方式分為兩種 冷啟動和熱啟動。1 冷啟動 當啟動應用時。後台沒有該應用的程序,這時系統會 又一次建立乙個新的程序分配給該應用,這個啟動方式就是冷啟動。2 熱啟動 當啟動應用時,後台已有該應用的程序 例 按 back 鍵 home 鍵,應用儘管會退出,可是該應用的程序是依舊...

App啟動優化解決方案

首先,定義執行緒排程類,dispatcherexecutor。這個類的主要作用就是初始化執行緒池,作為接收所有任務的容器類。在oncreate方法中,初始化任務物件,然後將各個物件塞入任務容器,這裡邊會有乙個演算法的操作,稱為有向無環圖的拓撲排序,將有依賴關係的各任務執行關係進行排序,排序好的任務會...