热启动耗时:

即当启动应用时,后台已有该应用的进程(我们模拟按下HOME键),打开软件,直到进入到首页activity页面,并计算耗时。

示例代码:

import os
import time def hotTime(device, pg_name, pga_name):
"""
:param device:
:param pg_name:
:param pga_name:
:return:
"""
# kill 进程
wait_time = 5
os.popen("adb -s {} shell am force-stop {}".format(device, pg_name))
time.sleep(wait_time)
os.popen("adb -s {} shell am start -W {}".format(device, pga_name))
time.sleep(wait_time)
try:
with open('F:/report/hotTime.txt', 'wb+') as f:
hot_time = []
for i in range(30):
keyEvent(3) # adb模拟按下Home键
time.sleep(wait_time)
start = os.popen("adb -s {} shell am start -W {}".format(device, pga_name)) # 启动activity
time.sleep(wait_time)
data = start.readlines()
for line in data:
if "TotalTime:" in line:
line = line.strip()
print("第{}次TotalTime为:{}ms".format(i+1,line[11:]))
if int(line[11:]) == 0:
break
hot_time.append(int(line[11:]))
f.write(('第{}次\n'.format(i + 1)).encode())
line += '\n'
f.write(line.encode())
return hot_time
except os.error as error:
print(error) # 获得设备ID
def getDev():
"""
:return: 获得设备id
"""
try:
devices_info = os.popen('adb devices')
data = devices_info.readlines()
if len(data) != 0 and data[1].find('device'):
s = data[1][:-8]
return s
return 0
except Exception as error:
print(error) # 模拟发送keyEvent
def keyEvent(keycode):
"""
:param keycode: 键值
"""
# KEYCODE_HOME = 3
# KEYCODE_BACK = 4
cmd = 'adb shell input keyevent {}'.format(keycode)
os.popen(cmd)
time.sleep(1) def main_hot():
"""
:return:
"""
s = getDev()
#pn = 'com.imbb.banban.android'
gh_packagename='sg.partying.ghost.android'
#an = 'com.imbb.banban.android/.MainActivity' # aapt dump badging + apk
gh_activityname='sg.partying.ghost.android/com.bb.infinity.InfiActivity'
print(s, gh_packagename, gh_activityname,'\n热启动测试开始...')
hot_list = hotTime(s, gh_packagename, gh_activityname)
#print(hot_list)
print('热启动测试结束...')
stime=sum(hot_list)
#print(stime)
avgtime=stime/len(hot_list)
print(avgtime)
with open('F:/report/hotTime.txt', 'ab+')as f:
f.write(('\n设备{}平均热启动耗时:{}ms'.format(s,avgtime)).encode()) #print(sum(hot_list)/len(hot_list)) if __name__ == '__main__':
main_hot()

最新文章

  1. Oracle 中的操作符
  2. Subliem Text 3 的安装和使用
  3. IIS常见错误
  4. XML文件操作(C#)
  5. python 参数的组合
  6. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'db_item'
  7. 【Android学习5】Clean 之后R文件丢失
  8. 使用ResourceBundle访问资源文件(properties)帮助类
  9. IJKMediaFramework第三方库的使用
  10. 代码风格——Cocos2d-x学习历程(四)
  11. 配置主机路由表(route)(两)
  12. Window7 下 WNMP 环境搭建
  13. JAVAEE学习——struts2_01:简介、搭建、架构、配置、action类详解和练习:客户列表
  14. 2018-2019-2 20165312《网络攻防技术》Exp6 信息搜集与漏洞扫描
  15. Django models中的null和blank的区别
  16. 【代码审计】大米CMS_V5.5.3 任意文件读取漏洞分析
  17. Find Amir CodeForces 805C
  18. Racket里的方括号
  19. Javassist
  20. java中String对象的存储位置

热门文章

  1. vue+vant-ui小程序,微信小程序自定义导航栏(适配刘海屏)
  2. 直播平台制作,Android 悬浮窗延时5秒返回APP问题
  3. 【离线数仓】数据仓库DW图解
  4. 【Java学习Day08】数据类型、变量及字节
  5. clickHouse安装踩坑
  6. file的各种转换
  7. UVM reg model 常见问题记录
  8. wake on lan sender 2.0.8
  9. 【Quartus系列】实验一: 3-8译码器(原理图输⼊设计)
  10. Mac实现截图OCR输出文字功能