性能日志

本文介绍如何为移动分析添加性能日志。

移动分析接入 Android 的性能日志包括:

  • 启动速度日志

  • 卡顿日志

  • 卡死日志

您可以在 mPaaS 控制台 > 移动分析 > 基础分析 中查看启动速度指标;在 mPaaS 控制台 > 移动分析 > 性能分析 中查看卡顿、卡死报告。

启动速度埋点

应用启动时长 = 调用该方法的时刻 - 应用开始启动的时刻。

推荐在首页 ActivityonCreate() 方法中调用如下方法启动速度埋点。

MPLogger.reportLaunchTime(Context context);

卡顿埋点

卡顿的定义为 Android 主线程超过 2.25 秒 仍未执行完一个方法。卡顿阈值因 APK 包类型而异:

  • APK 为 debug 包时,卡顿阈值为 0.75 秒,以便调试时快速发现潜在的卡顿问题。

  • APK 为 release 包时,卡顿阈值为 2.25 秒。

开启卡顿监控

方式一

界面需要继承 mPaaS 提供的 BaseActivityBaseFragmentActivityBaseAppCompatActivity类,凡是继承了这些类的界面都会自动监控卡顿。

方式二

重要

该方式仅在基线 10.2.3.50 及以上版本支持。

Activity的生命周期方法中手动调用相关接口,例如:

import android.app.Activity;
import android.app.Application;
import android.os.Bundle;

import com.mpaas.mas.adapter.api.MPLogger;

public class MPLifecycle implements Application.ActivityLifecycleCallbacks {

    private int mVisibleActivityCount = 0;
    private boolean isBackground = false;

    @Override
    public void onActivityCreated(Activity activity, Bundle bundle) {

    }

    @Override
    public void onActivityStarted(Activity activity) {
        mVisibleActivityCount++;
        if (isBackground) {
            isBackground = false;
            // 应用回到前台时调用
            MPLogger.monitorAppForeground();
        }
    }

    @Override
    public void onActivityResumed(Activity activity) {
        // 更新 Activity 上下文
        MPLogger.monitorActivityResumed(activity);
    }

    @Override
    public void onActivityPaused(Activity activity) {
    }

    @Override
    public void onActivityStopped(Activity activity) {
        mVisibleActivityCount--;
        if (mVisibleActivityCount <= 0) {
            isBackground = true;
            // 应用退到后台时调用
            MPLogger.monitorAppBackground();
        }
    }

    @Override
    public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
    }

    @Override
    public void onActivityDestroyed(Activity activity) {
    }

}

当 APK 为 debug 包时,卡顿监控为全量统计;APK 为 release 包时,卡顿监控为采样统计,采样率为 10%。

卡死埋点

卡死即 Android 系统的 ANR,通常情况下指主线程无响应时间 超过 5 秒

要开启卡死监控,详情请参考上文卡顿埋点中的 开启卡顿监控