启动分为冷启动和热启动:
冷启动:首次创建线程加载资源,打开的app
热启动:按了home键,退到后台,再打开回前台。
要了解这个脚本前需要先知道三个命令:
1、adb shell am start -W -n package/activity 启动app
2、adb shell am force-stop 包名 关闭app
3、adb logcat | grep START 获取包名
adb shell am start -W -n package/activity命令会返回个耗时时间,如下
(
Starting: ntent { cmp=com.estrongs.android.pop/.view.FileExplorerActivity }
Status: ok
Activity: com.estrongs.android.pop/.view.FileExplorerActivity
ThisTime: 596
TotalTime: 596
Complete)
cmp:是包名+Activity
thistime是耗时。
下面说下这个脚本:
需要创建俩个类,一个是APP类,一个是控制类,代码如下,可直接使用哦
import osimport timeimport csv# App类class App(): def __init__(self, packagename): self.paceageName = packagename self.startTime = 0 self.content = self.launchApp()def launchApp(self): # 启动App的方法 cmd = 'adb shell am start -W -n %s' % self.paceageNameprint(cmd)self.content = os.popen(cmd)def StopApp(self): # 暂停App的方法 paceageName = (self.paceageName).split('/')[0]
cmd = 'adb shell am force-stop %s' % paceageNameprint('cmd------>', cmd)
os.popen(cmd)def GetLaunchedTime(self): # 获取启动时间的方法 for line in self.content.readlines(): if "ThisTime" in line: self.startTime = line.split(":")[1]break return self.startTime# 控制类class Controller(): # run # CollectAllData # SavaDataToCsv def __init__(self, count): self.app = App('com.estrongs.android.pop/.view.FileExplorerActivity')self.counter = count self.alldata = [('timestamp', 'elapsedtime')]# 单次测试过程 def testprocess(self): self.app.launchApp()
elpasedtime = self.app.GetLaunchedTime() # 耗时 time.sleep(3)self.app.StopApp()
currenttime = self.getCurrentTime()
time.sleep(3)self.alldata.append((currenttime, elpasedtime))# 多次执行测试过程 def run(self): while self.counter > 0: self.testprocess()
time.sleep(3)self.counter -= 1 def getCurrentTime(self): # 获取当前的时间戳 currentTime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())return currentTimedef SavaDataToCSV(self): with open('startTime.csv', 'w+') as fp: write = csv.writer(fp)
write.writerows(self.alldata)if __name__ == '__main__': controlle = Controller(10)
controlle.run()
controlle.SavaDataToCSV()
执行完成后,会获得这么个表格:
一般来说,会去掉第一行的值,然后把后9行求个平均值,然后做成图表来做分析。