APP启动流程分析
1、要分析的问题
1、与正常trace比对,确认过耗时在哪个步骤(am create/pause/stop/start/doframe)?
2、与正常trace比对,确认过耗时在哪个cpu state(Running/Runnable/Sleep/Uninterruptible Sleep)?
2、启动分析
所谓冷启动就是启动该应用时,后台没有该应用的进程,此时系统会为该应用创建新的进程,之后会bindApplication来创建程并初始化application, 然后通过反射执行ActivityThread中的main方法。
而热启动则是,当启动应用时,后台已经存在该应用的进程,比如启动该应用后,再按home 键反馈至主界面后,再打开该应用。此时会从已有的进程中来启动应用,这种方式不会重新走bindApplication的动作。
1、冷启动流程(Cold Launch Flow ):
android.intent.action.MAIN:决定应用的入口Activity,也就是我们启动应用时首先显示哪一个Activity。
android.intent.category.LAUNCHER:表示activity应该被列入系统的启动器(launcher)(其本质也是一个APP)。
凡是声明了上面filter的activity,都会被launcher解析出来,对应图标排列在桌面。这样,用户就可以通过点击的方式启动Activity了。
当我们点击APP图标的时候,首先会调用launcher的onClick()方法,然后会通过添加intent.addflag(Intent.FLAG_ACTIVITY_NEW_TASK)通过调用Activity类的startActivity方法先pause前台的launcher,然后resume想启动想要启动的activity。其细节流程如下:
1.1、onclick -> startActivity
1.2、startActivityUnchecked -> resumreFocusedStackTopActivityLocked
1.3、reasumeFocusedStackTopActivityLocked:
startProcessLocked中会,上图中Activity所在进程的app已经存在部分可以理解成热启动流程,而下面restarting部分则为冷启动部分
1.4、冷启动的后续部分
1.5
2、热启动流程(Activity Resume Flow):
前面已经提到热启动流程跟冷启动流程最主要的区别就,热启动流程因为原有相关进程已经在后台,所以只需要resume相关activity就好
3、systrace分析:
了解上面的code流程后,我们从systrace中再次看下对应的冷热启动的流程和时间序列,systrace的抓取和基本操作请参考
如果用monitor抓取,请勾选system_server、IRQ Events、CPU frequency CPU Idle、binder kernel driver、 binder global lock trace几项。
3.1 冷启动对应systrace:
打开systrace之后,先按ctrl+F搜索inputreader,找到systremserver下的inputReader 进程,然后再其运行状态中找到AppLaunch_dispatchPtr:Up的时间点,也就是手指离开屏幕的时间点。 然后找到启动的app 的UI thread,check 其ActivityThreadMain->bindApplication->StartActivity->activityResume->Choreographer#doFrame ->draw → RenderThread(DrawFrame)。
利用systrace工具中的框选标记从AppLaunch_dispatchPtr:Up到RenderThread(DrawFrame)完成的时间,则为该app 冷启动画完第一帧的使用时间。若有launcher时间长的问题,请将上面各个时间节点拆分比较,和对比机对比检测出花费时间长的时间段。再细看时间长的原因
详细原因:
3.2 如何分析launcher时间慢的问题
3.3.1 Launcher时间拆分:
先按照上面的冷热启动的介绍,将launcher的时间拆分:
3.3.2、 定位差异部分:
定位出某个花费时间长的时间段后,框选该时间段的进程运行状态,在下面的Thread Timeslices中可以查看该时间段的进程运行状态。找出时间差异大tag的cpu status :Running/Runnable/Sleeping/Uninterruptible sleep
确认running/sleeping/runnable/uninterruptible sleep时间长之后,根据本文其它栏位中其对应的debug方法进一步确认。
相关文章:
![](https://img-blog.csdnimg.cn/9303450544454012baeb21c9e63328a0.png)
APP启动流程分析
1、要分析的问题 1、与正常trace比对,确认过耗时在哪个步骤(am create/pause/stop/start/doframe)? 2、与正常trace比对,确认过耗时在哪个cpu state(Running/Runnable/Sleep/Uninterruptible Sleep)? 2、启动分析 …...
![](https://www.ngui.cc/images/no-images.jpg)
IIR数字滤波器简介与实现
一、简介: IIR是一种数字滤波器,其输出是输入信号和过去输出的某些加权和。IIR滤波器由反馈和前馈组成,可以用于滤除或增强信号的特定频率成分。 IIR滤波器的输出表示为: y[n] b0 * x[n] b1 * x[n-1] b2 * x[n-2] … - a1 * …...
![](https://img-blog.csdnimg.cn/8af0d64cb5b149b9a7874a29842fb584.png)
3.5 函数的极值与最大值和最小值
学习目标: 我要学习函数的极值、最大值和最小值,我会采取以下几个步骤: 理解基本概念:首先,我会理解函数的极值、最大值和最小值的概念。例如,我会学习函数在特定区间内的最高点和最低点,并且理…...
![](https://www.ngui.cc/images/no-images.jpg)
第五十八天打卡
第五十八天打卡 739. 每日温度 提示 中等 1.5K company 亚马逊 company Facebook company 字节跳动 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在…...
![](https://img-blog.csdnimg.cn/03368e0397754160b4d90b9a9e2ef8cb.png)
双一流大学计算机专业月薪拿2000?网友:我裂开
**“计算机不行了”“求求不要再学计算机”……**这样的言论时不时就会在网上掀起一番热议,知了姐看得不少。尤其最近有则新闻,更是给计算机专业盖上“不值钱”的帽子。 某985、211大学校招会上,有企业招聘计算机相关岗位时,提出…...
![](https://img-blog.csdnimg.cn/45cfb3b1ae9546e5bf303cc18c19cef3.png)
ChatGPT的“N宗罪”?|AI百态(上篇)
序: AI诞生伊始,那是人人欣喜若狂的科技曙光,深埋于哲学、想象和虚构中的古老的梦,终于成真,一个个肉眼可见的智能机器人,在复刻、模仿和服务着他们的造物主——人类。 但科技树的点亮,总会遇到…...
![](https://img-blog.csdnimg.cn/img_convert/5145cc748a39c6167d36dbe58aa7a4cb.png)
48.现有移动端开源框架及其特点—MDL(mobile-deep-learning)
48.1 功能特点 一键部署,脚本参数就可以切换ios或者android支持iOS gpu运行MobileNet、squeezenet模型已经测试过可以稳定运行MobileNet、GoogLeNet v1、squeezenet、ResNet-50模型体积极小,无任何第三方依赖。纯手工打造。提供量化函数,对32位float转8位uint直接支持,模型…...
![](https://www.ngui.cc/images/no-images.jpg)
4.9--计算机网络之TCP篇之TCP Keepalive 和 HTTP Keep-Alive --(复习+大总结)---沉淀ing
HTTP 的 Keep-Alive,是由应用层(用户态) 实现的,称为 HTTP 长连接; TCP 的 Keepalive,是由 TCP 层(内核态) 实现的,称为 TCP 保活机制 HTTP 的 Keep-Alive HTTP 是基于…...
![](https://img-blog.csdnimg.cn/b8922a96fdf2414e861c2aeb8d0f07f8.png)
qt完善登录界面(2023-4-6)
点击登录按钮后,判断账号和密码是否一致,如果匹配失败,则弹出错误对话框,文本内容“账号密码不匹配,是否重新登录”,给定两个按钮ok和cancel,点击ok后,会清除密码框中的内容…...
![](https://img-blog.csdnimg.cn/39e0d4a96f8c41c38e425a3a684e98ac.gif#pic_center)
104.(cesium篇)cesium卫星轨道模拟
听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <html lang="en"> <...
![](https://img-blog.csdnimg.cn/6611880b7c5d48f38a36bba530ba2de3.png)
Linux shell编程
Shell脚本入门 touch helloWorld.sh 【创建脚本文件】 vim helloWorld.sh 【编辑文件】 以#!/bin/bash开头 echo "helloWorld" 调用脚本 方式一:bash 【绝对路径|相对路径】 方式二:chomd x helloWorld.sh 绝对…...
![](https://img-blog.csdnimg.cn/0d500209e75d4c96921f8b807c55aeb6.png)
Rasa 3.x 学习系列-Rasa [3.5.4] -2023-04-05新版本发布
Rasa 3.x 学习系列-Rasa [3.5.4] -2023-04-05新版本发布 Rasa Pro 3.5 中引入的两项新功能将帮助您更好地测试和保护您的 AI 助手:端到端测试和机密管理。 端到端测试 通过全面的验收和集成测试评估 AI 助手的性能。我们易于更新的端到端测试可以设置为运行每个流程和集成,…...
![](https://img-blog.csdnimg.cn/76810d6e0b9f4494b56ff80d15557115.png)
进程和线程
1.实现多线程 进程:是正在运行的程序 是系统进行资源分配和调用的独立单位 每一个进程都有它自己的内存空间和系统资源 线程:是进程中的单个顺序控制流,是一条执行路径 单线程:一个进程如果只有一条执行路径,则称为单线…...
![](https://www.ngui.cc/images/no-images.jpg)
ps 备忘清单_开发速查表分享
ps 命令速查备忘清单 Linux我们提供了一个名为 ps 的实用程序,用于查看与系统上的进程相关的信息,它是 Process Status 的缩写这份 ps 命令备忘清单的快速参考列表,包含常用选项和示例。入门,为开发人员分享快速参考备忘单。 开…...
![](https://img-blog.csdnimg.cn/883f4851329b457a9b87843a62ea2b56.png)
【ROS】基于WIFI网络实现图像消息跨机实时传输
【开发背景】 研究机器人目标检测算法的时候,常常需要把推理图像实时展示出来,以供观摩。而ROS1提供的跨机通信方法,要么是配置单Master,要么是配置多Master;一方面配置麻烦,另一方面传输效率低下…...
![](https://www.ngui.cc/images/no-images.jpg)
一次性说清楚 JAVA的 ThreadPoolExecutor 、newFixedThreadPool 和newCachedThreadPool 等
目录 1、Executors.newCachedThreadPool() 与 Executors.newFixedThreadPool(n) 的区别是什么? 2、Executors.newCachedThreadPool() 与 Executors.newFixedThreadPool(n) 可以调参吗,比如线程大小,线程等待时间 等等 3、newCachedThreadP…...
![](https://img-blog.csdnimg.cn/132861d6b5fd489f9e35ea7926eb5857.gif)
Android双目三维重建:Android双目摄像头实现双目测距
Android双目三维重建:Android双目摄像头实现双目测距 目录 Android双目三维重建:Android双目摄像头实现双目测距 1.开发版本 2.Android双目摄像头 3.双目相机标定 (1)双目相机标定-Python版 (2)双目相机标定-Matlab版 4.相机参数配置 5.Android 双…...
![](https://img-blog.csdnimg.cn/fed9a1ebafec4fd59c1e438719055d31.png)
解决Avoid using non-primitive value as key, use string/number value instead.
Avoid using non-primitive value as key, use string/number value instead. 意思是:避免使用非基本值作为键,而是使用字符串/数字值。 Duplicate keys detected: [object Object]. This may cause an update error. 意思是:检测到重复键:[o…...
![](https://img-blog.csdnimg.cn/82b01b6d395c40878507016755fb1db6.jpeg)
重构·改善既有代码的设计.03之重构手法(上)
1. 前言 之前的重构系列中,介绍了书中提到的重构基础,以及识别代码的坏味道。今天继续第三更,讲述那些重构手法(上)。看看哪些手法对你的项目能有所帮助… 2. 重新组织函数 对函数进行整理,使之更恰当的…...
![](https://img-blog.csdnimg.cn/50c0c47cb3ea4f8a9f9ad8b764925057.png)
闭关修炼(0.0 pytorch基础学习)1
基于官网pytorch.org pytorch 动态 比较优秀 py3.7支持是最多的啦 原来anaconda 是蟒蛇的意思 细思极恐 python 是蛇 yi Introduction to PyTorch Tensors — PyTorch Tutorials 2.0.0cu117 documentation omygaga 英语极差 哈哈哈 tensor 多维数组 矩阵二维数组 Tensor…...
![](https://img-blog.csdnimg.cn/4ede4545436740aba91eeaf3193abfe6.png)
个人-计算机操作系统第一章
一、章节习题 1.操作系统的目标与应用环境有关,如分时系统,希望能提供良好的()能力。 A、批处理B、可靠性C、稳定性D、人-机交互 2.()是应用程序取得OS所有服务的唯一途径。 A、系统调用B、作业调度C、键…...
![](https://www.ngui.cc/images/no-images.jpg)
Python-责任链模式
介绍 责任链模式是一种行为型设计模式,它允许多个对象以链式的形式依次处理请求,直到请求被处理或者无处理对象为止 实现方式 责任链模式由多个处理器组成,每个处理器都可以处理一种请求。如果当前处理器无法处理请求,它将把请…...
![](https://img-blog.csdnimg.cn/7cf18a7314cb4d88a0ec55cfc2143d44.png)
HIT 计统实验2 二进制炸弹(gdb破解版) 拆弹过程
CSAPP 实验2是一个很好玩的实验,网上有很多参考资源写的都很好,本文增加了一些具体细节。 想要我的炸弹可以私信我。 还得看形式语言 , 炸弹6 7 有时间再拆 第1章 实验基本信息 1.1 实验目的 熟练掌握计算机系统的ISA指令系统与寻址方式熟练掌握Linu…...
![](https://img-blog.csdnimg.cn/0c9a604a8b604ccfa909dfcb43cd6a20.png)
echart 半环渐变仪表盘
实现效果如图: op配置项代码: let Chart this.$echarts.init(document.getElementById(dashboard-1));let option {// backgroundColor: #040d2e,series: [// 中间灰色轴线{type: gauge,radius: 150%, // 位置center: [50%, 90%],startAngle: 180,end…...
![](https://img-blog.csdnimg.cn/img_convert/39d10506f56b4af0386795b69caff59e.png)
【springboot】自动加载分析
文章目录问题SpringBootApplication注解AutoConfigurationPackages.Registrar类AutoConfigurationImportSelector类springboot如何加载其他的starter总结问题 为什么我们在使用springboot的时候,只需要在maven中导入starter就能够使用呢?这里来分析一下…...
![](https://img-blog.csdnimg.cn/img_convert/1e8a4b9380f47b516f4f6df206408ad7.png)
ChatGPT批量翻译-ChatGPT批量生成多国语言
ChatGPT翻译的准吗 ChatGPT是一种基于Transformer架构的自然语言处理技术,其翻译准确性取决于所训练的模型和数据集的质量。在特定的语料库和训练数据下,ChatGPT可以实现一定程度的准确翻译。但是,与人工翻译相比,ChatGPT的翻译质…...
![](https://img-blog.csdnimg.cn/767a4f9e043844ca941ec23f433c6a4a.png)
Symble
ES6引入了一种新的原始数据类型 Symbol,表示独一无二的值。它是JavaScript语言的第七种数据类型,是一种类似于字符串的数据类型。 Symbol特点 Symbol 的值是唯一的,用来解决命名冲突的问题 Symbol值不能与其他数据进行运算 Symbol定义的对…...
![](https://img-blog.csdnimg.cn/img_convert/065ebd7c63dbd859419b5d22cffaa6cb.jpeg)
能在家里赚钱的工作有哪些?适合普通人的兼职项目
当下对于普通人而言,想在社会上找到一份舒心安逸的工作很难,特别是在薪酬待遇这方面,更是低得让人心寒。那么,如果能有一份在家就可以做的事情,而且是收入也不少,那将是很多普通人的最佳选择。在这里&#…...
![](https://www.ngui.cc/images/no-images.jpg)
创建SaaS产品帮助中心的关键步骤
帮助中心是一款SaaS产品必不可少的一部分,为了帮助用户更好的解决产品相关问题,提高新用户的使用体验,并且引导用户更好的使用产品,那么应该怎样制作帮助中心呢,每个产品帮助中心都需要有自己的风格,根据产…...
![](https://img-blog.csdnimg.cn/131b528a56d84b6390c6cffccf80e3e8.png)
高频算法:Leetcode53 最大子数组和
今天讲的是Leetcode第53题,最大子数组和 首先观察题目,题目需要我们找出具有最大和的连续子数组,直接拿题目中的示例来做一个演示,找一找什么规律下的连续子数组才能得到最大的和 先从-2开始,-2 1 -1 此时我们的和…...
![](/images/no-images.jpg)
利用模板如何制作网站/百度一下就知道百度首页
大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。第四代计算机主要采用大规模、超大规模集成电路作为基本电子元件。电子计算机(electronic computer)通称电脑,是现代一种用于高速计算的电子计算机器,可以进行…...
![](https://img2018.cnblogs.com/blog/1239507/201811/1239507-20181126165131342-917378679.png)
天津网站建设哪里好/百度排名查询
框架名称是ui_auto_web,有bin、conf、lib、log、reports和webCase六个目录,lib目录下有core和page目录,page目录下又包含web目录,把每个功能的测试用例存放到webCase目录下,核心功能文件放在core目录下,rep…...
![](/images/no-images.jpg)
龙岗网站制作公司/获客渠道有哪些
插件名说明open in browser浏览器中打开live server实时预览prettier代码格式化 Auto Close Tag Chinese (Simplified) Auto Rename Tag Beautify BEM Helper Code Runner CSS Tree Easy LESS EditorConfig for VS Code Git Graph GitHub Copilot HTML CSS Support Live Server…...
![](/images/no-images.jpg)
虾米播播支持wordpress吗/真人seo点击平台
题目链接:传送门 HDU 6015-6018 解题报告:传送门 HDU6015 Skip the Class Accepts: 678Submissions: 1285Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/65536 K (Java/Others)问题描述终于又开学啦。呃喵最喜欢的就是开学了,…...
![](https://img-blog.csdnimg.cn/img_convert/19af76b01fcaf3da54dd4e2d2702d577.png)
做室内设计的网站/ueeshop建站费用
五、网站模板替换教程为了接下来的截图更好看,小编已经给网站增加了若干几个栏目,并添加若干内容。因为默认模板的首页有首页头条、首页幻灯片等推荐位,所以小编推荐几篇内容并更新缓存生成首页之后,网站的截图如下:系…...
北京公司模板网站好/石家庄网络关键词排名
前面的直接插入算法,以抓牌为例,假设手气比较好,抓牌的顺序是从A直到K,那么在这整个过程中都无需进行任何的插入动作,只需要将每次抓到的牌放在最后即可。假设现在手上已经抓到的牌的顺序中逆序比较少,则抓…...