启动速度

标准如下:

应用启动的过程:

1.桌面点击图标 2.系统为应用创建进程 3.进程创建自己的组件

Activity的启动过程:

首先执行的是onCreate()、onStart()、onResume(),再等View树全部构建完毕,setContentView中的View全部显示结束了,算作是应用完全启动了

速度测试方法差别:

adb shell am start -W -n 包名/activity

?  ~  adb shell am start -W com.xys.preferencetest/.MainActivity
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.xys.preferencetest/.MainActivity }
Status: ok
Activity: com.xys.preferencetest/.MainActivity
ThisTime: 1047
TotalTime: 1047
WaitTime: 1059
Complete
  • ThisTime:最后一个启动的Activity的启动耗时
  • TotalTime:自己的所有Activity的启动耗时
  • WaitTime: ActivityManagerService启动App的Activity时的总时间(包括当前Activity的onPause()和自己Activity的启动)

缺陷:未包括view的绘制

$ adb logcat | grep “ActivityManager”

Activity启动,到Layout全部显示的过程,这里并不包括数据的加载,因为很多App在加载时会使用懒加载模式,即数据拉取后,再刷新默认的UI

优点:包括了view的绘制

缺点:未包括数据的加载

最跟移器测试相接近的软件方法:

reportFullyDrawn(自定义上报时间)

$ adb logcat | grep “ActivityManager”
ActivityManager: Displayed com.example.launcher/. LauncherActivity: +999ms
ActivityManager: Fully drawn com.example.launcher/. LauncherActivity: +1s999ms

前提条件:API19+,所以,这里需要对SDK版本进行判断

缺陷:API19+,要代码添加

帧率的测试:

?  ~ adb shell screenrecord --bugreport /sdcard/test.mp4

备注:

强制冷启动:在『开发者选项』中的Background Process Limit中设置为No Background Processes

时间: 2024-10-15 02:46:51

启动速度的相关文章

Android内核开发:系统启动速度优化

在学习新知识的过程中,我一直很推荐结合实战任务去学习,只有经历实战,才能加深对理论知识的理解.<Android内核开发>系列已经写了八篇了,本文就结合前面的内容,给大家布置一个实战任务: 优化Android系统的启动速度. 这里我简单介绍一下优化的基本思路和涉及的文件,具体细节由大家自己在实践去摸索,提高自己Google能力和解决问题的能力. Android系统的启动优化主要分为三大部分: (1) Bootloader优化 (2) Linux Kernel的剪裁与优化 (3) Android

加速Java应用开发速度2——加速项目调试启动速度

上一篇Spring/Hibernate提升速度的文章主要是通过一些技巧来提升启动速度,还是做不到如类的热部署/热替换.因此再写一篇关于热部署/热替换的文章.之前也有很多人介绍过这些知识,不过比较分散,我写此篇的目的是聚合它们.本文以HotSpot虚拟机为例. 首先让我们来看两个概念:热部署.热替换 热部署 即在容器运行过程中,重新加载类或重新加载整个项目.常见的解决方案就是使用自定义ClassLoader: 部分加载的示例:如JSP.Play框架: 重新加载整个项目的示例:如Tomcat.Jet

浅谈win7系统压缩包出错处理及提高启动速度的方法

有时候,客户需从网上下载一些软件举办安装时,网上很多软件都是压缩包名目标,必要解压后才气安装,然则有些客户会碰着压缩文件打不开的妨碍,呈现压缩错误或无法成立文件夹的妨碍,怎样办呢?Win7纯净版系统性能稳定,功能强大,占用资源也比较多,当客户电脑配置较低的时候,启动速度就会偏慢,其实是大概通过设置的方案提高一下WIN7系统启动速度, 一,原因阐发: 第一.电脑中病毒,全部exe文件受传染导致的打不开. 第二.你的压缩软件不支撑所压缩的算法,一样平常来说,此刻WinRAR软件行使的压缩算法都比较先

优化myeclipse启动速度以及解决内存不足问题

解决myeclipse内存不足问题: 使用 MyEclipse 开发项目后,随着项目文件的增多,以及运行时间的增加,实际上 MyEclipse 所消耗的内存是会一直增大的,有的时候会出现 MyEclipse 自身内存不足的情况,一般会出现下面的提示对话框:   解决方法: 打开MyEclipse目录下的myeclipse.ini文件 在后面修改下面几个属性 -vmargs-Xms512m              ( JAVA能够分配的内存)-Xmx512m              ( JAV

Windows8提高了启动速度

Windows7相比Windows8提高了启动速度.Windows8启动是一种全新的快速启动模式,该模式是传统冷启动和休眠恢复的混合体.在传统关机模式中,电脑会关闭所有“用户会话”,并在“内核会话”中关闭服务和设备,以便为彻底关机做准备.与Windows 7中一样,Windows 8会关闭“用户会话”,但不再关闭“内核会话”,而是将其休眠.与执行完整系统初始化相比,恢复休眠的系统会话的工作量将大大减少,这是启动速度加快的原因之一.同时,微软添加的多阶段恢复功能可以并行利用多核系统的所有核心,将读

Entity Framework的启动速度优化

刚开始的时候没有太在意,但是随着系统的发布,这种初次请求,或者闲置若干时间后第一次请求的漫长等待使得App的体验很差,很多时候App加载好半天数据都没过来.如果前端没处理好,还会导致App的假死.所以就花了点功夫研究下什么原因导致. 刚开始的时候,还以为是WebService的框架出了问题.后面使用App,通过Fiddler看到了,某次请求db.竟然长达6s中,并且每次导致请求超时都出现在db.访问这一块,这显然不正常.早期,我们访问数据库使用的是原始的ADO.NET 执行SQL语句,如果有参数

提升HTML5的性能体验系列之五 webview启动速度优化及事件顺序解析

webview加载时有5个事件.触发顺序为loading.titleUpdate.rendering.rendered.loaded.webview开始载入页面时触发loading,载入过程中如果<title>节点已经解析并赋予新值,触发titleUpdate,页面开始渲染,触发rendering,页面渲染完毕,触发rendered,页面载入完毕触发loaded. loaded常用于判断页面是否载入完毕,载入完毕才显示新页面.但有时页面内容很长时,全部载入完毕比较慢,导致显示新窗体比较慢.为了

应用程序启动速度的优化

Mac OS/Android在下面Static Initializer Mozillaproject师通过优化Static Initializer(静态初始化,或全局建构函数, Global Constructor)和Binary布局来提升FireFox启动速度的文章.很有參考价值. 文章中以x86及x86-64平台为基础,以下加了Mac OS及Android上的binary布局. 什么是Static Initializer? 简而言之就是全局C++对象的初始化. 有人笑称一个C++程序的mai

android 提高App启动速度

公司的App启动速度太慢了要求提高启动速度, 于是动手研究下 把启动速度从2000ms降低到800ms左右. 先记录下提速的方法 application的Oncreate方法里面的逻辑代码全用 new Handler().post(new Runnable());包裹 Activity的Oncreate()方法如此: 这种方法会把代码执行的时序全拖到onResumer之后 3,然后在Oncreate onresume 方法 一切你认为会阻碍到启动速度的方法和代码加上log打印信息 看图 看点击的

Android中通过导入静态数据库来提高应用第一次的启动速度

一个Android应用给用户的第一印象非常重要,除了要有好的创意和美观的界面,性能也是很关键的部分,本文讨论的就是第一次启动的速度问题. Android应用的启动过程不能让用户等待太长时间,个人觉得最好控制在3秒之内.一般来说,内容的初始化是影响Android应用第一次启动速度的主要因素之一,尤其是创建数据库并插入一定数量的初始记录,对于这种问题,最好的办法莫过于在首次初始化时导入静态数据库. 在Android中导入静态数据库很简单,首先将准备好的静态数据库文件放到Android工程的res目录