Android性能分析与优化笔记 - 3 启动时间优化

本文深入探讨App启动优化策略,包括启动时间测量、异步优化、异步初始化最优解及AOP切面统计方法消耗时间。介绍了如何使用ADB、监听View首帧绘制进行启动时间测量,如何利用线程池和CountDownLatch实现异步优化,以及如何通过任务调度器优化初始化流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

源码地址:https://github.com/codeguyFred/MyPerformance
https://github.com/codeguyFred/MyPerformance/tree/master/app/src/main/java/com/optimize/performance/launchstarter

3-2启动优化介绍

App startup time

  • 冷启动
    在这里插入图片描述
  • 温启动
    在这里插入图片描述
  • 热启动
    在这里插入图片描述

3-3 启动时间测量方式

adb shell am start -W 包名/首屏Activity
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
监听View首帧绘制
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

3-4 启动工具选择

在这里插入图片描述
会带偏
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3-5~3-7 aop切面统计方法消耗事时间在这里插入图片描述

3-8异步优化

    private static final int CORE_POOL_SIZE = Math.max(2, Math.min(CPU_COUNT - 1, 4));
    private static final int MAXIMUM_POOL_SIZE = CPU_COUNT * 2 + 1;
    ···
     ExecutorService service= Executors.newFixedThreadPool(MAXIMUM_POOL_SIZE);
        service.submit(new Runnable() {
            @Override
            public void run() {
                
            }
        });
有些不满足异步优化的条件可以通过计数,延迟Application onCreate的执行完毕,在需要计数的地方调用countDownLatch.countDown();在最末尾的地方调用countDownLatch.await();等待计数一样后才不等待

CountDownLatch countDownLatch=new CountDownLatch(1);
countDownLatch.countDown();
countDownLatch.await();

在这里插入图片描述
在这里插入图片描述

3-9~3-10 异步初始化最优解(对常规方法的优化)

在这里插入图片描述在这里插入图片描述
https://github.com/codeguyFred/MyPerformance/blob/master/app/src/main/java/com/optimize/performance/launchstarter/TaskDispatcher.java
通过树的排序确定初始化任务的执行顺序
https://github.com/codeguyFred/MyPerformance/blob/master/app/src/main/java/com/optimize/performance/launchstarter/sort/TaskSortUtil.java
在这里插入图片描述

主线程执行的task在这里插入图片描述
异步的task在这里插入图片描述
初始化
在这里插入图片描述

  • dispatcher.await 需要等待task完成才执行完onCreate,task需要重写needWait方法来声明
  • task重写dependOn方法,依赖于某个任务的初始化,比如极光推送初始化需要先获取设备id
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值