您的位置:首页 > 编程语言 > Java开发

android之Eclipse如何使用adb

2015-04-25 14:28 363 查看
对于像AndroidStudio这种更先进的IDE,肯定自带了adb输入窗口。

但ADT是没有的,也就是说使用Eclipse是没有自带输入窗口的!不过,这个adb是Android自带的,只是Eclipse没有输入命令的窗口而已,那么用Eclipse开发的菜鸟们,如何输入adb命令呢?(前提是:你有需求必须使用adb命令)

使用方式:

win+r打开cmd,通过cd命令进入adb所在目录,比如我的目录是:D:\adt-bundle-windows-x86_64-20140702\sdk\platform-tools。然后就可以使用adb命令了。

比如我现在的需求是:要查看listview滑动、fragment切换、复杂动画等等的帧数。

那么,我先打开USB调试,在“GPU呈现模式分析”中,选择“在adb shell dumpsys gfxinfo中”,然后重启应用,快速滑动我的listview或者其他操作 。然后在定位到adb目录下的cmd窗口中输入"adb shell dumpsys gfxinfo com.xxx.xxx"(后面这个com.xxx.xxx等是包名),回车。然后就出现很多信息,滚动鼠标滚轮就找到了



这样,我就可以通过“draw”列找到在Java中创建显示列表部分中,OnDraw()方法占用的时间。

如果超过16(单位是ms,因为手机屏幕都是60Hz,1000ms÷60Hz=16.6666666.....ms,如果一帧超过这个时间,那么就代表存在顿卡现象)

补充:(下面的解释参考自:http://www.cnblogs.com/myzh/archive/2013/03/17/2965225.html)

Draw:表示在Java中创建显示列表部分中,OnDraw()方法占用的时间。

  Process:表示渲染引擎执行显示列表所花的时间,view越多,时间就越长

  Execute:表示把一帧数据发送到屏幕上排版显示实际花费的时间。其实是实际显示帧数据的后台缓存区与前台缓冲区交换后并将前台缓冲区的内容显示到屏幕上的时间。所以这个时间,一般都很短。



  PS:View类包含Surface(变量名mSurface),每个Surface通常对应两个buffer,一个front buffer, 一个back buffer。(4.1之后是3个,一个前,两个后)其中,back buffer就是canvas绘图时对应的bitmap (研究Android_view_Surface.cpp::lockCanvas)。因此,绘画总是在back
buffer上,需要更新时,则将back buffer和front buffer互换。



  Draw + Process + Execute = 完整显示一帧 ,这个时间要小于16ms才能保存每秒60帧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: