导航:首页 > 操作系统 > android查看启动时间

android查看启动时间

发布时间:2022-07-17 09:04:41

android app启动时间测试,使用ADB命令如何实现

直接写一个脚本使用adb命令控制app启动,然后使用截屏命令快速截屏最终将截屏结果的产生时间做分析即可

Ⅱ 怎么计算android app启动时间

事实上 Android 中一个 App 的启动时间可以准确计算的.但是要分场景.也就是说要分开游戏和应用. 大家都知道,在Android中,游戏开发和应用开发是两码事.所以我们需要分开来说.
1.1 应用启动
我们平时在写应用的时候,一般会指定一个 mainActivity ,用户在桌面上点击这个 Activity 的时候,系统会直接起这个 Activity. 我们知道 Activity 在启动的时候会走 onCreate/onStart/onResume .这几个回调函数.
许多书里讲过,当执行完 onResume 函数之后,应用就显示出来了…其实这是一种不准确的说法,因为从系统层面来看,一个 Activity 走完 onCreate/onStart/onResume 这几个生命周期之后,只是完成了应用自身的一些配置,比如 window 的一些属性的设置/ View 树的建立(只是建立,并没有显示,也就是说只是调用了 inflate 而已) . 后面 ViewRootImpl 还会调用两次performTraversals ,初始化 Egl 以及 measure/layout/draw. 等.所以我们定义一个 Android 应用的启动时间, 肯定不能在 Activity 的回调函数上下手.而是以用户在手机屏幕上看到你在 onCreate 的 setContentView 中设置的 layout 完全显示为准,也就是我们常说的应用第一帧.
上面扯得有点远,不感兴趣的话可以不看,下面直接说方法.题主说的 adb shell am start -w packagename/activity,是可以完全应用的启动时间的.不过也要分场景.
1.2 应用第一次启动
也就是我们常说的冷启动,这时候你的应用程序的进程是没有创建的. 这也是大部分应用的使用场景.用户在桌面上点击你应用的 icon 之后,首先要创建进程,然后才启动 MainActivity.这时候adb shell am start -w packagename/MainActivity 返回的结果,就是标准的应用程序的启动时间(注意 Android 5.0 之前的手机是没有 WaitTime 这个值的):
➜ adb shell am start -W com.meizu.media.painter/com.meizu.media.painter.PainterMainActivity
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.meizu.media.painter/.PainterMainActivity }
Status: ok
Activity: com.meizu.media.painter/.PainterMainActivity
ThisTime: 355
TotalTime: 355
WaitTime: 365
Complete

总共返回了三个结果,我们以 WaitTime 为准.
关于ThisTime/TotalTime/WaitTime的区别,下面是其解释:
“adb shell am start -W ”的实现在 frameworks\base\cmds\am\src\com\android\commands\am\Am.java 文件中。其实就是跨Binder调用ActivityManagerService.startActivityAndWait() 接口(后面将ActivityManagerService简称为AMS),这个接口返回的结果包含上面打印的ThisTime、TotalTime时间.

startTime记录的刚准备调用startActivityAndWait()的时间点
endTime记录的是startActivityAndWait()函数调用返回的时间点
WaitTime = startActivityAndWait()调用耗时。
ThisTime、TotalTime 的计算在 frameworks\base\services\core\java\com\android\server\am\ActivityRecord.java 文件的 reportLaunchTimeLocked() 函数中。

我们来解释下代码里curTime、displayStartTime、mLaunchStartTime三个时间变量.
curTime表示该函数调用的时间点.
displayStartTime表示一连串启动Activity中的最后一个Activity的启动时间点.
mLaunchStartTime表示一连串启动Activity中第一个Activity的启动时间点.
正常情况下点击桌面图标只启动一个有界面的 Activity,此时 displayStartTime 与mLaunchStartTime 便指向同一时间点,此时 ThisTime=TotalTime。另一种情况是点击桌面图标应用会先启动一个无界面的 Activity 做逻辑处理,接着又启动一个有界面的Activity,在这种启动一连串 Activity 的情况下(知乎的启动就是属于这种情况),displayStartTime 便指向最后一个 Activity 的开始启动时间点,mLaunchStartTime 指向第一个无界面Activity的开始启动时间点,此时 ThisTime!=TotalTime。
看到这里应该清楚 ThisTime、TotalTime、WaitTime 三个时间的关系了吧。WaitTime 就是总的耗时,包括前一个应用 Activity pause 的时间和新应用启动的时间;ThisTime 表示一连串启动 Activity 的最后一个 Activity 的启动耗时;TotalTime 表示新应用启动的耗时,包括新进程的启动和 Activity 的启动,但不包括前一个应用 Activity pause 的耗时。也就是说,开发者一般只要关心 TotalTime 即可,这个时间才是自己应用真正启动的耗时。
Event log中 TAG=am_activity_launch_time 中的两个值分表表示 ThisTime、TotalTime,跟通过 “adb shell am start -W ” 得到的值是一致的。
最后再说下系统根据什么来判断应用启动结束。我们知道应用启动包括进程启动、走 Activity生命周期 onCreate/onResume 等。在第一次 onResume 时添加窗口到WMS中,然后measure/layout/draw,窗口绘制完成后通知 WMS,WMS 在合适的时机控制界面开始显示(夹杂了界面切换动画逻辑)。记住是窗口界面显示出来后,WMS 才调用reportLaunchTimeLocked() 通知 AMS Activity 启动完成。
最后总结一下,如果只关心某个应用自身启动耗时,参考TotalTime;如果关心系统启动应用耗时,参考WaitTime;如果关心应用有界面Activity启动耗时,参考ThisTime。
1.2 应用非第一次启动
如果是你按Back键,并没有将应用进程杀掉的话,那么执行上述命令就会快一些,因为不用创建进程了,只需要启动一个Activity即可。这也就是我们说的应用热启动。
2 游戏启动场景
游戏启动的话,就不适用用命令行的方法来启动了,因为从用户点击桌面图标到登录界面,既有系统的部分也有游戏自己的部分。
2.1 系统部分
游戏也有一个Activity,所以启动的时候还是会去启动这个Activity,所以系统启动部分也就是用户点击桌面桌面响应到这个Activity启动。
2.2 游戏部分
一般游戏的主Activity启动后,还会做一些比较耗时的事情,这时候你看到的界面是不能操作的,比如:加载游戏数据、联网更新数据、读取和更新配置文件、游戏引擎初始化等操作。从游戏开发的角度来看,到了真正用户能操作的界面才算是一个游戏真正加载完成的时间。那么这个时间,就得使用Log来记录了,因为加载游戏数据、联网更新数据、读取和更新配置文件、游戏引擎初始化这些操作,都是游戏自己的逻辑,与系统无关,所以得由游戏自己定义加载完成的点。
对于游戏的启动时间,我们更倾向于计算从 点击桌面图标 到 用户可以与游戏进行交互 这个时间段作为一个游戏的启动时间。
3 总结
计算机最让人着迷的一点就是其准确性,1+1永远等于2,启动耗时多久就是多久,每一次可能不一样,但每一次的时间都是这一次的准确时间。
不过每个公司由于对应用的定位不同,所以对应用启动的要求也不一样。比如有的做 ROM 的公司,其内置应用的启动时间一定是要非常快的,这样给用户的第一感觉就是快、流畅;互联网公司的 App 则不是很关心启动速度,大部分互联网公司的应用都有一个启动页,用来展示广告或者功能介绍之类的,然后才会进入到主界面。需求不一样,这么做也无可厚非,不过从消费者的角度来看,越早见到主界面当然越好。
所以在做一个 Android App 的时候,一定要记得将应用的启动时间作为一个性能指标,毕竟
天下武功,唯快不破!

Ⅲ 如何查看手机第一次开机时间

以魅族手机为例:

1、首先解锁手机,进入桌面,单击“设置”进入“设置”。

Ⅳ 怎么查看手机最近开机时间

以安卓手机为例,查询手机开机运行时间的方法如下:

1、首先,在手机桌面上找到设置菜单命令;接着在设置首页最上方点击我的设备。

2、然后选择全部参数;然后最下方的状态信息,点击可以查看本机号码、信号;这里边就可以查看到手机的已开机时间了,“已开机时间”这一项就是手机开机运行时间。
1、在手机拨号界面,输入*#06# 查询IEMI号。

2、查询到IMEI号后,按住IMEI号,进行复制。

3、找到手机中的会员服务,打开。

4、选择保修查询。

5、点击查询进入查询页面,按住粘贴刚刚复制的IMEI号,点击查询。

6、这里可能会有两种结果: 1)查询不到保修期,说明你这个是新机,保修信息还没到华为的系统。 2)查询到保修期,根据保修期往前推算一年,可以知道第一次激活的日期,就可以判断你激活的时候是不是第一次激活。
如果想要查看一下手机上次的开机时间,了解手机开机后运行了多长时间,这时该怎么样来查询呢?下面就与大家一起分享一下查看的方法吧。

开启分步阅读模式
工具材料:
小米手机
操作方法
01
首先我们按一下小米手机的电源按钮,解锁当前的手机屏幕。

02
接下来我们左右滑动屏幕找到小米手机的“设置”图标

03
点击后打开小米手机的设置页面,在页面中我们点击“我的设备”菜单项。

04
在打开的我的设备页面中,点击下面的“全部参数”菜单项。

05
这时就会打开全部参数页面,在页面中向下拉动屏幕,找到“状态信息”菜单项。

06
在打开的状态信息页面中,可以看到“已开机时间”菜单项,在这里可以看到当前手机上次开机到现在的时间了。

Ⅳ 车机安卓系统启动时间

车机安卓系统启动时间大概10秒钟左右。现在的车机基本上都是安卓的,有小部分是基于安卓二开的。首先汽车的车机系统,有些不是厂商自己开发的,而是外包给专门的第三方公司。在燃油车时代,汽车厂商只研发发动机,变速箱,底盘这些重要的东西。像车机系统这些东西并不是厂商自己开发的。不过随着新能源时代,自动驾驶时代的到来,车机系统的重要性越来越大。所以最近几年厂商也在重点开发车机系统。但是依然不会完全自主开发,而是与其他公司合作。比如说上汽集团的斑马系统就是上汽与阿里巴巴联合开发的。还有一些车机系统是华为,腾讯,网络这样的公司来参与开发。

Ⅵ 如何检测App启动时间

对于app的性能测试,启动时间是个重要指标,启动时间分为两种情况,一种是冷启动时间(通常是系统重启,即在启动前没有该app进程的情况),另一种是热启动,即app从被切换到前台(点back退出后再点击图标启动)。
从Android4.4(API 19)开始,可以从logcat获取activity的启动信息,如下我用应用宝做实验,可以看到如下的输出,从这里我们可以看到应用的这个activity启动用了639ms。
12-13 00:10:41.331 855-957/? I/ActivityManager: [AppLaunch] Displayed Displayed com.tencent.android.qqdownloader/com.tencent.assistantv2.activity.MainActivity: +639ms (total +751ms)
12-13 00:10:41.331 855-957/? D/ActivityManager: AP_PROF:AppLaunch_LaunchTime:com.tencent.android.qqdownloader/com.tencent.assistantv2.activity.MainActivity:639:50307447
这个log信息会在activity首次被绘制时输出,也就是如果activity栈里有这个activity,再启动不会输出该信息,典型的场景是通过recent task列表切换到其他activity再立即切换回来时。
log中的时间包括系统从开始处理启动activity的时间到完成运行layout和draw函数的时间,不包括点击icon到系统接收到消息的时间。显然,这个时间也不包括启动中异步UI绘制的时间。但是我们在测试中关注的其实是用户体验的启动时间,那么上面log中的时间就不能满足我们的需求了。
不过还好,既然是用户体验我们可以用更直观的方式,使用screenrecord进行屏幕录制然后分析视频。使用如下命令录制视频。
adb shell screenrecord –bugreport /sdcard/launch.mp4
–bugreport参数会使视频输出一些时间信息和帧信息便于我们分析启动时间。activity启动后,使用ctrl+c结束视频录制,使用
adb shell pull /sdcard/launch.mp4 /Users/xxx/Downloads/launch.mp4
导出视频到电脑,使用可以按帧播放的视频软件打开(mac上quicktime就可以,win下可以用kmplayer),并按帧播放。
按帧播放视频,视频左上角会显示每一帧的时间(精确到ms)和帧数。在视频中会看到icon会变暗然后高亮,高亮时就是系统开始处理本次icon点击事件了。可以把这里作为点击时间,然后根据体验要求,看到app启动页完全绘制完作为终止时间,这个时间减去点击时间就是app的启动时间。

在进行app启动时间测试时,系统中运行的其他app会对启动时间有干扰,如果需要进行版本对比及竞品对比,最好要尽量保持环境一致,并反复执行多次取平均值。最后,不要忘了分别测试冷启动和热启动哦~

安卓怎么查看开机时间 Android中如何计算App的启动时间

从购买到现在的使用时间是无法查的,只能查到你从拔掉数据线到使用到现在的时间。

阅读全文

与android查看启动时间相关的资料

热点内容
linux命令连接oracle 浏览:200
垫江停车收费桩怎么上App 浏览:133
好兴动app还款怎么登录不上去了 浏览:665
郑州云服务器托管 浏览:722
服务器地址跟踪 浏览:980
免费google云服务器 浏览:516
摘译和编译的英文 浏览:359
热泵压缩机选型 浏览:121
op手机微信加密如何解除 浏览:386
如何在王牌战争找到高爆率服务器 浏览:13
江浙小学语文辅导课用什么APP 浏览:99
新梦幻大陆服务器地址 浏览:241
网吧服务器怎么更换壁纸 浏览:530
linux命令方法 浏览:332
linux下载freetype 浏览:123
程序员入驻平台 浏览:327
程序员大战外挂 浏览:745
html实例教程pdf 浏览:157
linux命令开放所有权限 浏览:575
30岁能学会编程 浏览:737