码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 应用启动& 应用启动优化


    一、了解冷热启动

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

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

  • 相关阅读:
    一文搞懂什么是DSMM,干货!!!
    页面页脚部分CSS分享
    Windows中的Git Bash运行conda命令:未找到命令的错误(已解决)
    Web3开发者技术选型:前端视角(next.js)
    docsify项目部署(华为云+宝塔+centos+docker+nginx)踩坑指南
    ctfshow web入门 php特性 web126-web130
    在 Vue.js 中,使用 watch 监听data变量如:对象属性/data变量
    手把手教你设计一个CSDN系统
    发现了一些有用的 Javascript 单行代码,能快速处理一些问题
    mysql kudu impala中 多层分组 先统计用户数量 再区间统计和的数量
  • 原文地址:https://blog.csdn.net/xxdw1992/article/details/126937413
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号