1.0 adb測試啓動時間
解釋一下 thistime 就是最後一個activity啓動的時間
totaltime就是 冷啓動所花費的時間
waittime就是等待上一個應用結束後加上啓動的時間 所有會長一點
1.2 手動打點,測試啓動時間
通過log來測試 方便帶到線上 以activity繪製第一個條目爲目標下onpreviewdraw 添加監聽 當window開始繪製view
時再刪除
public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
if (position == 0 && !mHasRecorded) {
mHasRecorded = true;
holder.layout.getViewTreeObserver()
.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
holder.layout.getViewTreeObserver().removeOnPreDrawListener(this);
LogUtils.i("FeedShow");}
}
}}
2.0 查看具體進程啓動時間
2.1 TraceView
- 圖像的形式展現時間和調用棧
- 信息全面 保護所有線程
!!!打開安卓文件夾後查看
大致上長這樣
- 運行開銷大
- 會影響應用速度,帶偏優化方向
2.2 systrace
一個輕量級的查看進程的所耗費時間的工具 支持python2.7
可以使用python代碼來查看
如果查看有誤,請點這裏,幫助文檔
輕量級 方便 可看cpu核心數 和線程詳細情況 使用代碼
TraceCompat.beginSection("nimade")
Latte.instance.init(this)
//假裝網絡延遲,方便觀察loading
.withLoaderDelayed(0)
.withInterceptor(EmptyInterceptor())
//之後使用我遠程部署的測試數據
.withApiHost("http://mock.fulingjie.com/mock/api/")
.withIconTypeface(FontAwesome)
TraceCompat.endSection();
然後去裏面看使用時間
2.3-更優雅的去查看每個方法的詳細啓動時間
我們建議使用aop編程
、
- 侵入性低
一個插件可以幫組我們快速的去寫我們的代碼
查看所有activity生命週期
具體使用請百度
@Around("call(* com.optimize.performance.PerformanceApp.**(..))")
public void getTime(ProceedingJoinPoint joinPoint) {
Signature signature = joinPoint.getSignature();
String name = signature.toShortString();
long time = System.currentTimeMillis();
try {
joinPoint.proceed();
} catch (Throwable throwable) {
throwable.printStackTrace();
}
LogUtils.i(name + " cost " + (System.currentTimeMillis() - time));
3.0 優化小技巧
override fun onCreate(savedInstanceState: Bundle?) {
setTheme(R.style.AppTheme)
super.onCreate(savedInstanceState)
supportActionBar?.hide()
}
<style name="AppTheme.Launcher" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowBackground">@mipmap/launcher</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
</style>
3.2 異步加載 ,跑滿cpu 別浪費cpu的核心數 —
加快啓動
可以使用線程池,把在application裏面要初始化的東西開異步線程,併發 會加快啓動速度
建議使用啓動器 可以合理運用我們的手機的核心數 ,且 可以避免遇到哪些需要依賴 其他方法的情況,
還有些是一定要初始化好,主線程才能正常運行的。
3.3 延遲加載-- 加快啓動
一些不需要一定在啓動就完成的東西,就等到啓動後去加載
3.4 懶加載 —加快啓動
懶加載就是如果地圖只在一個地方用到 ,就在那一個地方加載,不用再application裏面加載
其他的方法—可以參考
-
提前異步類加載—開線程加載可能要用到的類 ,用到的時候就快了 使用連接
-
啓動時間抑制GC
-
cpu鎖頻