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


    一、了解冷热启动

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

    热启动: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键,将冷启动做成热启动的假象。

  • 相关阅读:
    uniapp实现安卓端导出execl、打包excel为zip压缩文件、分享zip压缩文件到微信、qq
    PCIe 设备树详细讲解
    Vinco Ventures任命Ted Farnsworth为联合首席执行官
    11 Self-Attention相比较 RNN和LSTM的优缺点
    Android Media Framework(一)OpenMAX 框架简介
    SwaggerSpy:一款针对SwaggerHub的自动化OSINT安全工具
    如何退出或卸载奇安信天擎软件
    养生与健康|一起跟随林曦老师养个元气满满
    10分钟了解数据架构、数据模型
    RSS阅读器
  • 原文地址:https://blog.csdn.net/xxdw1992/article/details/126937413