首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何改进这个bash命令以从ActivityManager获得UI呈现时间?

如何改进这个bash命令以从ActivityManager获得UI呈现时间?
EN

Stack Overflow用户
提问于 2016-11-20 22:37:50
回答 1查看 39关注 0票数 0

我正在开发一个基于消防应用程序生成器的示例应用程序,并希望通过编程来测量绘制Activity所需的时间(以毫秒为单位)。此信息包含在ActivityManager日志中:

代码语言:javascript
复制
I/ActivityManager( 1843): Displayed com.amazon.android.calypso/com.amazon.android.tv.tenfoot.ui.activities.ContentBrowseActivity: +656ms

一秒以上的时间如下:

代码语言:javascript
复制
I/ActivityManager( 1843): Displayed com.amazon.android.calypso/com.amazon.android.tv.tenfoot.ui.activities.ContentBrowseActivity: +1s001ms

然而,Android的设计使得应用程序只能读取自己的日志。因此,Runtime.getRuntime().exec("logcat -d ActivityManager:I *:S")不会显示任何东西。我可以使用shell命令读取日志,但我的正则表达式并没有给出我想要的。

以下命令

代码语言:javascript
复制
adb logcat -d ActivityManager:I *:S | sed -n 's/ContentBrowseActivity:\s+\+\([0-9].*\)ms/\1/p'

匹配,但是因为sed不支持非贪婪的表达式,所以整行都打印出来:

代码语言:javascript
复制
I/ActivityManager( 1843): Displayed com.amazon.android.calypso/com.amazon.android.tv.tenfoot.ui.activities.656

我只想得到时间。挂接另一个grep命令将获得以下数据:

代码语言:javascript
复制
adb logcat -d ActivityManager:I *:S | sed -n 's/ContentBrowseActivity:\s+\+\([0-9].*\)ms/\1/p' | grep -Po [0-9]+

在超过1秒的时间里,我只想把第一个数字乘以1,000,然后把它加到第二个。

但是,这是非常麻烦的,而且还捕捉到了I/ActivityManager(####)中的数字。另一种更优雅的解决方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-21 00:23:41

代码语言:javascript
复制
$ echo 'I/ActivityManager( 1843): Displayed com.amazon.android.calypso/com.amazon.android.tv.tenfoot.ui.activities.ContentBrowseActivity: +1s001ms' | sed -e 's/^.*: +\(.*\)ms$/\1/' -e 's/s//'
1001
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40710264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档