位置: 编程技术 - 正文

Using DDMS——使用DDMS(using dispose)

编辑:rootadmin

推荐整理分享Using DDMS——使用DDMS(using dispose),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:using 'simple offset',usingdirection,using method,using gerund as subject,using dispose,using namestd,usingdirection,using dtb from configuration,内容如对您有帮助,希望把文章链接给更多的朋友!

Android自带了一个叫做虚拟机调试监控服务器的工具,提供端口转发服务,在设备上捕获屏幕,设备上的线程和堆信息,日志,进程和无线电状态信息,模拟来电和短信,模拟位置数据等等。本文对DDMS特性提供了一个适度地讨论,并不是一个针对所有特性和功能的详尽探究。

运行DDMS

DDMS集成到Eclipse中,并且SDK的tools目录下也自带。DDMS可以工作在模拟器和连接设备上。如果两者都连接并同时运行,DDMS默认工作在模拟器上。

在Eclipse中:点击Window>Open Perspective>Other..>DDMS字命令行中:在tools目录下输入ddms(在Mac/Linux上输入./ddms)DDMS如果与调试器交互

在Android上,每一个应用运行在自己的进程中,每一个进程运行在自己的虚拟机中。每一个虚拟机暴露一个调试器可以绑定的唯一端口。

当DDMS启动后,它会连接到adb。当有设备连接,一个虚拟机监控服务就会在adb和DDMS之间创建,并通知DDMS设备上的虚拟机的启动或终止。一旦一个虚拟机运行,DDMS就会通过adb获取虚拟机的pid,并通过设备上的adb daemon打开一个到虚拟机调试器的连接。DDMS此时就可以是用一个自定义的线协议与VM进行通信了。

DDMS给设备上的每一个虚拟机分配一个调试端口。典型地,DDMS给第一个调试虚拟机分配端口,下一个端口等等。当一个调试器连接到这些端口的任一个时,所有的流量都会从关联的虚拟机转向到调试器。你只能给一个端口绑定一个调试器,但是DDMS可以处理多个,绑定多个调试器。

默认情况下,DDMS也监听另一个调试端口,就是DDMS的”base port”(默认为)。base port是一个端口转发者,可以从任意调试端口接收虚拟机流量,然后转发到端口上的调试器。这允许你绑定一个调试器到端口,从而调试一个设备上的所有虚拟机。转发的流量是由在DDMS的Devices视图中选择的进程来决定的。

下面的屏幕快照展示了一个Eclipse中的典型DDMS。如果你从命令行中启动DDMS,界面略有不同,但大部分功能是相同的。注意到运行在模拟器的高亮进程com.android.email,端口和同时绑定到这个进程上。这意味着DDMS当前转发端口到静态端口。

注:DDMS快照

已知的Dalvik调试问题 在Dalvik虚拟机调试应用应该像应用在其他虚拟机中运行一样。然后,当单步执行同步代码时,可能在某一步,当前行的游标跳转到了方法的最后一行。

使用DDMS

下面的部分描述了如何使用DDMS以及DDMS GUI中的各种标签页和面板。Eclipse版本和命令行版本只有微小的UI差异,但功能相同。

查看进程的堆使用情况

DDMS允许你查看一个进程使用了多少堆内存。这个信息对于跟踪应用程序执行时的一个确定时间点堆使用情况。 查看一个进程堆使用情况的步骤:

在Devices标签页中,选择你想查看堆信息的进程。点击Update Heap按钮启用进程的堆信息。在Heap标签页,点击Cause GC来调用垃圾回收,从而启用堆数据的回收。当这个操作结束,你可以看到一组对象类型以及每一种类型已经分配的内存。你可以再次点击Cause GC刷新数据。点击列表中的一个对象类型可以看到一个条形图,显示了分配了一个特定字节大小内存的对象的数量。跟踪对象的内存分配

DDMS提供了跟踪分配内存的对象的特性,并可以查看哪些类和线程分配的这些对象。这一特性允许你实时跟踪在应用中执行一个指定动作时,哪些对象被分配。这个信息对于评估影响应用性能的内存使用情况有用。

跟踪对象的内存分配的步骤:

在Devices标签页中,选择你想启用跟踪分配的进程。在Allocation Tracker标签页,点击Start Tracking按钮开始跟踪分配。此时,你在应用中做的一切都会被跟踪。点击Get Alloctions可以查看到从你点击Start Tracking按钮之后分配的对象列表。你可以再次点击Get Alloctions来添加分配的新对象到列表上。点击Stop Tracking按钮来停止跟踪或清空数据并结束。点击列表中特定一行,可以查看更多信息,例如分配对象的方法和在代码中的行数。使用模拟器或设备的文件系统

DDMS提供了一个File Explorer标签页允许你查看、拷贝以及删除设备上的文件。这个特性对检查应用穿件的文件或你想在设备上传输文件非常有用。

使用模拟器货设备文件系统的步骤:

在Devices标签页中,选择你想查看文件系统的模拟器。想从设备中拷贝一个文件,在File Explorer定位文件然后点击Pull file按钮。拷贝一个文件到设备上,点击File Explorer标签页上的Push file按钮。检查线程信息

DDMS的Threads标签页显示了选中进程当前运行的线程。

在Devices标签页中,选择你想检查线程的进程。点击Update Threads按钮。在Threads标签页中,你可以查看到选中进程的线程信息。开始方法分析Using DDMS——使用DDMS(using dispose)

方法分析是跟踪一个方法某些指标的一个工具,例如调用次数,执行时间,执行方法所耗时间。如果你想更细粒度地控制从哪里收集分析数据,使用startMethodTracing()和stopMethodTracing()方法。

在你开始在DDMS中进行方法分析前,请注意以下限制:

Android2.1及更早的设备必须有SD卡并且你的应用必须有写SD卡的权限Android2.2及之后的设备不需要有SD卡。跟踪日志文件直接输出到你的开发机器上。

开始方法分析的步骤:

在Devices标签页中,选择你想启用方法分析的进程。点击Start Method Profiling按钮与应用交互来启动你想分析的方法点击Stop Method Profiling按钮。DDMS停止分析你的应用并打开TraceView,显示在从你点击Start Method Profiling到Stop Method Profiling这段时间内的收集的方法分析信息。使用网络流量工具

在Android4.0中,DDMS包含了一个Detailed Network Usage标签页使得可以在应用执行网络请求时进行跟踪。使用这个工具,可以监视你的应用如何及何时传输数据并且合适地优化底层代码。你可以通过在使用网络套接字之前应用一个“tag”来区分不同的网络类型。

这些tags会在DDMS中的堆栈区域图中显示。

注:Network Usage标签页

通过监视数据传输频率,每个连接传输数据的数量,可以确定应用中可以更节能的区域。通常,你应该寻找可以被延迟的短峰,或者让那些会造成后续传输的先执行。

更好的确定传输高峰,TrafficStats API允许使用setThreadStatsTag()标记一个线程中的数据传输,之后通过使用tagSocket()和untagSocket()手动标记或取消标记每一个套接字。例如:

另外,Apache HttpClient和URLConnection API内部基于活动标签(通过getThreadStatsTag()确定自动)标记套接字。这些API在通过keep-alive池回收时正确地标记/解除标记套接字。在下面的例子中,setThreadStatsTag()设置活动标签为0xFD。在每个线程中只有一个活动标签。这个标签可以被getThreadStatsTag()返回从而HttpClient可使用来标记套接字。最后一条语句调用clearThreadStatsTag()来清除标记。

套接字标记是在Android 4.0支持的,但是实时状态只能在Android 4.0.3或更高的设备上显示。

使用LogCat

LogCat被集成到DDMS中,输出你通过Log类打印的信息以及当异常抛出时的堆栈信息等系统信息。

当你设置日志时,你可以使用DDMS中的LogCat特性通过下面的按钮来过滤确定的消息:

VerboseDebugInfoWarnError

你也可以设置你的自定义过滤器来指定更多的细节,例如通过日志标签或者生成日志信息的进程id来过滤信息。添加过滤器、编辑过滤器和删除过滤器按钮让你管理你的自定义过滤器。

模拟手机操作和位置

Emulator控制标签页允许你模拟手机声音和数据网络状态。这对当你想测试你的应用在不同网络环境下的健壮性是很有用的。

改变网络状态,速度和延迟

Emulator控制标签页的手机状态部分允许你改变手机网络状态,速度和延迟。下面的选项是可用的,并且会在你设置它们后立即生效:

Voice - unregistered,home,roaming,searching,deniedData - unregistered,home,roaming,searching,deniedSpeed - Full, GSM, HSCSD, GPRS, EDGE, UMTS, HSDPALatency - GPRS, EDGE, UMTS模拟电话或SMS文本消息

Emulator控制标签页的手机状态部分允许你模拟电话和信息。这对当你想测试你的应用在响应发送到手机上的来电和信息时的健壮性是很有用的。下面的动作是可用的:

Voice - 在Incoming number字段中输入号码然后点击Call发送一个模拟电话到模拟器或手机上。点击Hang up按钮来终止通话SMS - 在Incoming number字段中输入号码以及在Message字段中输入信息,然后点击Send按钮发送消息。设置手机的位置

如果你的应用依赖手机的位置,你可以用DDMS发送给设备或AVD一个模拟位置。这是很有用的如果你想不用移动来测试你应用的不同特定位置的特性。下面的地理位置数据类型是可用的:

Manual - 通过手动指定经度和纬度值来设置位置GPX - GPS 交换文件KML - Keyhole标记语言文件

原文链接:

Android 之Toast讲解-android学习之旅(一) Toast比较常用,用于显示简短的提醒,比如网络连接断开等。Toast的简单编码实例findViewById(R.id.button1).setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(

Android学习第天 PS:新添加的Activity需要加入AndroidManifest.xml中LinearLayout垂直或水平分布布局relativeLayout相对布局tableLayoutlinearlayout混合布局ListView类iOSTableViewListView通过Acti

高职院校移动互联网应用软件开发赛准备小结 1.系统设计(略)2.程序排错(略)3.功能编码(可以整理)Ui布局(简单的拖动布局)网络通信(JSON)正常流程:根据接口去http请求,得到JSON,发送Han

标签: using dispose

本文链接地址:https://www.jiuchutong.com/biancheng/379715.html 转载请保留说明!

上一篇:Android真机连接Eclipse时,打不开File Explorer下的data文件夹解决方法(android连接手机)

下一篇:Android 之Toast讲解-android学习之旅(一)(android toast位置)

  • 购买固定资产的进项税可以抵扣吗
  • 什么情况下税务会监管
  • 筹建期的收入要交企业所得税吗
  • 广告赞助支出可以抵税吗
  • 出差补贴没有发票怎么做账
  • 折旧费属于什么科目
  • 企业所得税跨年度事项
  • 修理办公用复印机好吗
  • 租车费属于办公费吗
  • 机器设备预付的费用计入
  • 建筑安装业什么时候确认收入
  • 公司试驾车购置税怎么交
  • 银行借款的利息支出属于什么会计要素
  • 扣押属于纳税担保吗
  • 分红未及时扣缴税款要缴滞纳金吗?
  • 普通的增值税发票可以查询到购买人的信息吗
  • win10回退到以前版本失败
  • 屏幕乱跳广告解决办法
  • 出口关税的完税条件
  • 会计凭证和记账凭证的区别是什么
  • 总产值在报表中怎么看
  • 计提工资时个税是计提上月的吗
  • c盘显示隐藏
  • 差额发票可以开1个点吗?
  • web投票系统源码
  • windows11播放视频不清晰
  • php处理json
  • 购买土地前期费用怎么入账
  • PHP:imagesettile()的用法_GD库图像处理函数
  • 六月雪的养殖方法和浇水时间
  • 认缴制注册资金不交可以吗
  • 待摊费用和预提费用属于什么账户
  • 应收账款转让的限制约定
  • 碧峰峡熊猫基地门票
  • 今日除夕吉时
  • wordpress转化为html
  • php微信公众号开源框架
  • 一个用于表示特定的web页的标识符url称为
  • Yii中的relations数据关联查询及统计功能用法详解
  • sed指令可以打印文件的奇数或偶数行
  • 新手为什么要买二手车
  • 通过微信支付码能查到微信本人吗
  • mysql 长事务
  • mysql基本语法
  • 固定资产处理的税务政策
  • 电脑自学网站推荐
  • opencv python
  • 公司购买基金入什么科目
  • 消防设备计入什么科目
  • 企业收到海河工厂发运的乙材料,并验收入库
  • mysql中的索引有
  • 购进货物用于建筑安装
  • 差旅费包括内容
  • 一般纳税人可以给小规模开专票吗
  • 公司并购股份如何分配
  • 应收账款管理制度
  • 开出地税发票(工程款)怎么做账?
  • 应收票据和应付票据的区别
  • 财务预算怎么做模板
  • 账簿的保管年限有哪些规定
  • 结账时如何划线进去
  • winx64下mysql5.7.19的基本安装流程(详细)
  • WINDOWS操作系统属于单用户任务操作系统
  • Win10/Win8.1 PC版WhatsApp更新:新的emoji表情符号
  • Windows2008 对决 Windows Vista优势
  • linux deploy 无root
  • javascript基础教程教材答案
  • andriod 控件
  • opengl导入obj能动起来吗
  • javascript基础
  • 基于jquery的框架
  • python错误代码
  • 用python编写简单程序
  • 简单的安卓代码
  • js实现拖拽功能
  • 残疾人个税减免6000元
  • 通用申报表水利基金怎么填
  • 什么是核心征管申报
  • 生产税净额包含企业所得税吗
  • 房屋契税交错了能退吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设