手機開機(開啟電源),引導晶元會啟動乙個引導程式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方法中,初始化任務物件,然後將各個物件塞入任務容器,這裡邊會有乙個演算法的操作,稱為有向無環圖的拓撲排序,將有依賴關係的各任務執行關係進行排序,排序好的任務會...