Android启动优化

本文详细探讨了Android应用的启动优化,包括冷启动、热启动和温启动的定义,以及如何通过adb命令和手动埋点获取启动时间。文章介绍了traceview和systrace等工具的使用,以及AspectJ在启动优化中的应用。此外,还提供了优化技巧,如Theme切换、异步优化、启动器使用和延迟初始化等,并提出了优化总方针。
摘要由CSDN通过智能技术生成

启动方式

冷启动

在这里插入图片描述

热启动

在这里插入图片描述

温启动

  • 会重新走Activity的生命周期
    在这里插入图片描述

优化方向

  • Application和Activity的生命周期

adb命令获取启动时间

  • adb shell am start -W packagename/com.xxx.xxx.首屏Activity
    • ThisTime 最后一个Activity启动耗时
    • TotalTime 所有Activity启动耗时
    • WaitTime AMS启动Activity的总耗时
  • 局限性
    • 只能线下使用,线上无法获取
    • 时间不严谨

手动埋点计算启动时间

  • onWindowFocusChanged Activity的首帧但是数据可能没显示出来
  • 应把数据完全显示出来作为结束时间
public class LaunchTimer {

    private static long sTime;

    public static void startRecord() {   //开始时间
        sTime = System.currentTimeMillis();
    }

    public static void endRecord() {//结束时间
        endRecord("");
    }
// 在界面可见的时候数据显示出来的时候调用,表示app启动完成可用
    public static void endRecord(String msg) { //加tag的结束时间
        long cost = System.currentTimeMillis() - sTime;
        LogUtils.i(msg + "cost " + cost);
    }
}
  • 精确,可以带到上线,推荐使用
  • addOnDrawListerner要求API16

常用的工具

traceview

  • 图形展示执行时间 ,调用栈等信息
  • 信息全面,包含所有线程
  • 代码埋点

使用方式

  • Debug.startMethodTracing(“文件名”);//默认文件大小 8m
  • Debug.stopMethodTracing();
  • 生成文件在手
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值