应用程序的启动时间也是衡量应用性能好坏的重要指标之一,所以我们来看一下如何获取一个程序启动所需的时间。

获取程序启动的时间有几种方法,详情见下文分析:

方法一:通过log获取。

思路:通过记录开始时间与结束时间,计算时间差来获取启动时间。

在onCreate()方法最后一行加入log.e(“TAG”,”"finish),通过查看logcat中的log输出来计算程序启动时间。

此种方法需要有源代码,并且比较原始,不推荐。

方法二:通过ActivityManager轮训来实现获取启动时间。

思路:通过轮训未出现时间与出现时间,计算时间差来获取启动时间。

protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ActivityManager am = (ActivityManager) getSystemService(this.ACTIVITY_SERVICE);List<RunningAppProcessInfo> appinfo = am.getRunningAppProcesses();for (RunningAppProcessInfo runningAppProcessInfo : appinfo) {if (runningAppProcessInfo.processName.equals("yourpakagename")) {Log.e("TAG", System.currentTimeMillis() + "");}}}

  

此方法较第一种方法,不需要源代码,较精准。

方法三:通过外部调起应用(shell am)的方法来获取启动时间。

思路:通过Android shell 命令来调起应用获取启动时间。

adb shell am start -W -n yourpakagename/MainActivity

或者

adb shell logcat -v time -b events | findstr activity_launch_time

  

此法获取的启动时间非常精准,可精确到毫秒。

综上三种方法,方法一比较原始但是操作简单,适用于初学者用于要求不高的黑盒测试;方法二技术要求较高,适合于在手机上开发的应用对其他应用来检测启动时间;方法三适用于批量查看应用启动时间,缺点在于必须获取所有应用的LanuchActivity。

转载于:https://www.cnblogs.com/xiao-kkp/p/4117997.html

【转】获取Activity启动时间的三种方式相关推荐

  1. 获取Class对象的三种方式

    获取Class对象的三种方式 Object --> getClass() 通过对象.getclass 任何数据类型(包括基本数据类型)都有一个"静态"的class属性 通过类 ...

  2. 获取class文件对象三种方式

    Class类 阅读API的Class类得知,Class 没有公共构造方法.Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的 获取Clas ...

  3. 反射应用和获取Class对象的三种方式

    一.写一个"框架",可以创建任何对象运行任何方法 1.配置文件 2.使用类加载器ClassLoader,Properties集合是可以和IO流结合使用完成读取和写入数据的集合,方法 ...

  4. java反射之获取class对象,Java之反射机制(获取Class对象的三种方式)

    Java之反射机制(获取Class对象的三种方式) 开发工具与关键技术:MyEclipse 10,java 作者:刘东标 撰写时间:2019-06-14 如何得到各个字节码对应的实例对象? 每个类被加 ...

  5. JS基础-Java Class类以及获取Class实例的三种方式

    JS基础-Java Class类以及获取Class实例的三种方式 由于JVM为每个加载的class创建了对应的Class实例,并在实例中保存了该class的所有信息,包括类名.包名.父类.实现的接口. ...

  6. webservice服务器端获取request对象的三种方式

    有的时候在webservice里我们需要获取request对象和response对象,比如想要获得客户端的访问ip的时候就需要这么做,下面说三种方式,当然三种方式可能是针对不同方式部署webservi ...

  7. Struts2-从值栈获取list集合数据(三种方式)

    创建User封装数据类 public class User {private String username;private String password;public String getPass ...

  8. Java动物类enjoy方法打印_Java反射学习-2 - 获取Class对象的三种方式

    1 packagecn.tx.reflect;2 3 importjava.lang.reflect.Constructor;4 importjava.lang.reflect.Field;5 imp ...

  9. java反射获取实体类_java 反射获取类对象的三种方式

    Java反射经常用到的就是获取对象中的属性,那么Java获取类对象就是必不可少的啦! Java实体类: public class ReflexModel { private String code; ...

最新文章

  1. IE浏览器上传文件时本地路径变成”C:\fakepath\”的问题
  2. 如何填写微软2007MVP申请表格以及相关建议
  3. 考试用计算机反思800字,考试反思作文800字
  4. 编码规范一 结构与要求
  5. (一)golang工作区
  6. Oracle Logminer 说明
  7. android 百分比loading,牛逼的loading加载效果
  8. php7 viewmodel,【初念科技】| php框架实例: Laravel之Model Observer模型
  9. pantone潘通色卡对照表_赶快收藏!快速对色必备:潘通色卡电子版(一)1TPX~113TPX...
  10. 【Ceres基本使用方法】使用Ceres拟合曲线求解最小二乘问题
  11. leetcode - Recover Binary Search Tree
  12. 190514每日一句
  13. Webmagic爬虫框架
  14. 个人公众号: AI科技时讯
  15. 什么是互联网运营?运营小白应该了解的理论基础
  16. Android面试题收集(有具体答案)
  17. 重磅!谷歌突然宣布!百度、滴滴懵了
  18. Qt 之 事件总线模型
  19. linux中寄存器的作用是什么,c-x86_64汇编器中RBP寄存器的作用是什么?
  20. storm风暴英雄 tempo_暴雪发布2018《风暴英雄》HGC战队实力排行榜

热门文章

  1. 入行数据分析要知道什么是标准计分离差
  2. Java常见面试题 Java面试必看 (一)
  3. pip安装pytorch的方法
  4. 网络营销不是收费删帖:为网络营销正本清源
  5. Java之十三 Java多线程
  6. BLUESIGN认证辅导,bluesign system管理输入,采取哪些负责任的行动
  7. vue3 简易等待图片加载的组件
  8. 电脑系统数据堆积过多想要重装win10系统,一键装机工具哪个好用?
  9. SQL之like通配符
  10. 如何破解Excel VBA密码