App啟動代碼優(yōu)化

代碼不優(yōu)化

在構(gòu)建App時,我們經(jīng)常需要引用一些第三方的sdk,而項目業(yè)務越多,引用的第三方也越多,有些第三方會要求我們在Application的onCreate方法中對其初始化。這意味著:在application的onCreate方法中執(zhí)行時間會被越長,首個Activity布局的渲染時間也會相應的拉長。
同理,如果我們在Activity的onCreate, onStart,onResume方法中執(zhí)行的任務時間過長,同樣也會導致布局被渲染的時間拉長。這樣直接導致的問題就是,用戶會感覺頁面遲遲沒有加載出來,用戶體驗極差。

測量啟動時間

在Android4.4及更高的版本中。logcat包括一個輸出行,其中包含命名為
Displayed的值,此值代表從啟動進程到在屏幕上完成對應 Activity 繪制所經(jīng)

通過adb命令

adb shell am start -W com.xykaye/.MainActivity

// 運行結(jié)果
ThisTime:最后一個Activity啟動時間
TotalTime:一系列Activity啟動時間
WaitTime:總啟動時間,包含系統(tǒng)在冷啟動時,需要加載app信息到內(nèi)存的時間

手動打印檢測

  public void onCreate(){ 
      super.onCreate();  
      File file = new File(Environment.getExternalStorageDirectory(),"app.trace");
      Debug.startMethodTracing(file.getAbsolutePath());
      // 其他業(yè)務邏輯代碼
      init();
      test();
      Debug.stopMethodTracing();
  } 
// 獲取trace文件命令 
adb pull /storage/emulated/0/app.trace

手動打印日志計算啟動時間,只能記錄應用內(nèi)耗時

優(yōu)化目標 減少代碼執(zhí)行時間:

  • 采用異步線程的方式來進行處理
    1.異步線程中使用的api不能創(chuàng)建handler
    2.不能有UI操作
    3.對異步要求不高
  • 延時初始化
  • 懶加載
  • 空閑時初始化


    test.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容