hakunamatata

hakunamatata

應用啟動#

安卓官方文檔:

應用啟動時間 | App quality | Android Developers (google.cn)

啟動時間統計#

1. 使用 perfetto#

2 使用命令#

>adb shell am start -S -W com.xiaopeng.musicradio/com.xiaopeng.musicradio.home.view.HomeActivity
Stopping: com.xiaopeng.musicradio
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.xiaopeng.musicradio/.home.view.HomeActivity }
Status: ok
LaunchState: COLD
Activity: com.xiaopeng.musicradio/.home.view.HomeActivity
TotalTime: 2602
WaitTime: 2609
Complete
C:\Users\Xpeng>adb shell am start -S -W com.xiaopeng.musicradio/com.xiaopeng.musicradio.home.view.HomeActivity
Stopping: com.xiaopeng.musicradio
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.xiaopeng.musicradio/.home.view.HomeActivity }
Status: ok
LaunchState: COLD
Activity: com.xiaopeng.musicradio/.home.view.HomeActivity
TotalTime: 2642
WaitTime: 2657
Complete
adb shell am start -S -W com.xiaopeng.musicradio/com.xiaopeng.musicradio.home.view.HomeActivity
Stopping: com.xiaopeng.musicradio
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.xiaopeng.musicradio/.home.view.HomeActivity }
Status: ok
LaunchState: COLD
Activity: com.xiaopeng.musicradio/.home.view.HomeActivity
TotalTime: 2634
WaitTime: 2649
Complete
package com.xiaopeng.utils;

import android.os.Debug;
import android.text.TextUtils;

/**
 * 正式環境中禁止使用這個類
 */
public class TraceMethodUtils {
    /**
     * 適合於非常精確的記錄,某個具體函數的耗時分析
     *
     * profiler cpu 中instrument模式,會從開始一直記錄方法/cpu 使用情況,對性能影響大。
     */
    @Deprecated
    public static void  startTrack(String tracFileName){
        Debug.startMethodTracing(fixTraceFileName(tracFileName));
    }

    /**
     *  在android 5.0 以後使用,間隔時間微妙
     *
     *  profiler cpu 中sample模式,系統間隔us 週期性記錄調用棧,對性能影響小
     * @param tracFileName
     */
    @Deprecated
    public static void startSampleTrack(String tracFileName){
        //1000us=1ms 週期性記錄一次
        Debug.startMethodTracingSampling(fixTraceFileName(tracFileName),50,1000);
    }
    @Deprecated
    private static String fixTraceFileName(String tracFileName){
        if (!TextUtils.isEmpty(tracFileName)){
            tracFileName=tracFileName.endsWith(".trace")?tracFileName:tracFileName+".trace";
            tracFileName=new StringBuilder().append(System.currentTimeMillis()).append("_").append(tracFileName).toString();
        }else{
            tracFileName=new StringBuilder().append(System.currentTimeMillis()).append(".trace").toString();
        }
        return tracFileName;
    }
    /**
     * 結束跟蹤
     */
    @Deprecated
    public static void stopTrack(){
        Debug.stopMethodTracing();
    }
}
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。