• 应用启动& 应用启动优化


    一、了解冷热启动

    冷启动:当启动应用时,后台没有该应用的进程(常见如:进程被杀、首次启动等),这时系统会重新创建一个新的进程分配给该应用。

    热启动:App进程存在,并且Activity对象仍然存在内存中没有被回收。可以重复避免对象初始化,布局解析绘制。

    场景就类似你打开微信聊了一会天这时候出去看了下日历在打开微信微信这时候启动就属于热启动。

    二、掌握应用启动流程

    冷启动开始时,系统有三个任务。这三个任务是:

    1.创建应用进程。

    2.加载并启动应用。

    3.在启动后立即显示应用的空白启动窗口然后显示Activity。

    应用进程就负责后续阶段:

    1. 创建应用对象。
    2. 启动主线程。
    3. 创建MainActivity。
    4. 加载布局。
    5. 布置屏幕。
    6. 首帧绘制。

    三、掌握如何查看应用启动耗时

    1、查看Logcat

    在Android Studio Logcat中过滤关键字“Displayed”,可以看到对应的冷启动耗时日志。

    2、adb shell

    使用adb shell获取应用的启动时间

    // 其中的AppstartActivity全路径可以省略前面的packageName

    adb shell am start -W [packageName]/[AppstartActivity全路径]

    执行后会得到三个时间:ThisTime、TotalTime和WaitTime,详情如下:

    ThisTime

    表示最后一个Activity启动耗时。

    TotalTime

    表示所有Activity启动耗时。

    WaitTime

    表示AMS启动Activity的总耗时。

    一般来说,只需查看得到的TotalTime,即应用的启动时间,其包括 创建进程 + Application初始化 + Activity初始化到界面显示 的过程。

    四、掌握应用启动优化分析思路

    启动过程中的常见问题

    • 1、点击图标很久都不响应:预览窗口被禁用或设置为透明。
    • 2、首页显示太慢:初始化任务太多。
    • 3、首页显示后无法进行操作:太多延迟初始化任务占用主线程CPU时间片。

    1.冷启动优化之阶段把控

    整个冷启动流程中至少有两处onCreate,分别是Application和Activity,onCreate中尽量避免做过多的初始化动作,如果必须,那么考虑IntentService

    2.冷启动优化之曲线救国(慎用)

    将确实是退出的逻辑替换为按Home键,将冷启动做成热启动的假象。

  • 相关阅读:
    net基于asp.net的高校学生奖励管理系统
    i++ 和 ++i原理
    Vite实现原理
    基于R的linkET包qcorrplot可视化Mantel test相关性网络热图分析correlation heatmap
    2022牛客多校十 E-Reviewer Assignment(匈牙利算法)
    测试饱和了? 大数据测试就业薪资和前景究竟怎么样?
    画一个时钟(html+css+js)
    3d建模都是美术生学的吗
    上交所行情文件解析之mktdt00.txt
    一种词库的比对、保存方式
  • 原文地址:https://blog.csdn.net/xxdw1992/article/details/126937413