《Android 应用案例开发大全(第二版)》——1.4节 DDMS的灵活应用

简介:

本节书摘来自异步社区《Android 应用案例开发大全(第二版)》一书中的第1章,第1.4节 DDMS的灵活应用 ,作者 吴亚峰 , 于复兴 , 杜化美,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.4 DDMS的灵活应用
Android 应用案例开发大全(第二版)
作为一名合格的软件开发人员,必须要学会怎样去调试程序。因为调试是一个程序员最基本的技能,其重要性甚至超过学好一门语言。可以这样说,不会调试的程序员肯定不会有很好的发展。

那么什么是调试呢?所谓程序调试,是在软件投入实际使用前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。这是保证软件系统正确性的必不可少的步骤。

Android为开发人员提供了一个强大的调试工具——DDMS,通过DDMS可以调试并监控程序的运行,更好地帮助开发人员完成软件的调试和开发。本节将对DDMS的使用进行详细地讲解,希望读者对软件整体把握能力有大的帮助。

1.4.1 初识DDMS
打开Eclipse,窗口的右上角找到Open Perstective按钮,单击后选择DDMS选项,即可打开Android SDK提供的强大调试工具——DDMS,如图1-9所示。


8bad3f020b0937ab9f2cfc1ff3c6fff16a0798ae

单击DDMS选项后,就会打开DDMS调试窗口,如图1-10所示,该窗口的布局可自行调整,主要包括以下几个部分。

设备列表面板——Devices。
如果计算机连接有真实设备或打开了设备模拟器则会在此面板中列出。

模拟器控制器面板——Emulator Control。
此面板中提供了模拟手机动作的一些功能,如发出语音拨号请求、发出GPS模拟信号等,方便在开发过程中的调试。

日志显示面板——LogCat。
此面板中主要打印设备运行时的一些系统或用户自定义的日志信息,方便调试及分析问题。

线程监控面板——Threads。
此面板中主要列出当前选中进程下属线程的情况,开发中可以通过此面板提供的信息分析线程的工作情况。

内存堆监控面板——Heap。
此面板主要用于显示程序运行过程中的内存整体占用情况,对于分析程序的内存问题很有帮助。

对象分布监控面板——Allocation Tracker。
此面板主要用于显示程序运行时对象的分布情况,辅助开发人员在调试时分析问题。

文件浏览器面板——File Explorer。
此面板用于显示选定Android设备的文件分布情况,就像Windows下的文件浏览器一样。


85c09a17df9c83599ecb2bdfb83420fc25354092

1.4.2 强大的日志管理功能——LogCat的使用
查看日志文件,可以使程序员完全了解程序的运行状况,从而进一步地优化和修改程序代码,LogCat为开发人员提供了强大的日志管理功能,通过LogCat可以查看模拟器运行的所有状态,还可以通过过滤器来筛选出自己需要的日志。

打开DDMS后单击LogCat选项卡,打开LogCat面板,默认看到的是模拟器所有的日志,如图1-11所示,其中包括verbose、debug、info、warn、error 5种类别。

开发人员可以使用Java中的System.out.println()方法来打印输出,辅助调试程序。运行程序后,打印输出的内容便显示在LogCat中,如图1-11所示。


795af94755a2d69d8abb5d3aa6dfef58f1e15fbd

如果读者觉得Log中有太多的无用信息,还可以自建日志过滤器,只显示自己需要的日志文件,具体方法如下。

单击LogCat面板右上角的绿色加号,会弹出LogFilter对话框,在Filter Name中输入过滤器的名称,在by Log Tag中输入要过滤的内容,如图1-12所示,此时再次运行程序,选择自定义日志选项卡,可以看到日志中只有System.out的内容,如图1-13所示。


afeea11b983ecefce9f4dc739a2f865d46929410

单击右上角Clear Log按钮可以快速地清除所有的日志文件,便于程序下一次运行调试。

1.4.3 Devices的管理
通过Devices选项卡,如图1-14所示,可以方便地对多个模拟器和模拟器的进程、线程、堆等进行管理,还提供了软件截图的功能。


9c45cd417e45448ce6ca8823c57561f6baf3cd66

这里开启了两个Android模拟器,从图1-14中可以看到两个模拟器都出现在了Devices面板中,分别为emulator-5554和emulator-5556,通过单击模拟器的名称,可以在多个模拟器中进行切换。

截图功能:在模拟器中运行程序,如需要对软件运行效果进行抓图,在需要抓图的界面停留,然后单击Devices选项卡右上角Screen Capture按钮,显示截图对话框,在对话框中可以预览图片,并进行刷新、图片旋转、保存、复制等,如图1-15所示。

结束进程功能:先单击选中模拟器中要结束的进程,然后单击Devices选项卡右上角的Stop Process按钮,即可强制结束进程。如要结束模拟器中的com.anroid.music进程,如图1-16所示。

上面介绍的只是Devices面板简单的两个功能,它还可以与其他面板共同使用,进行程序线程和堆的管理。

线程的查看和管理:一个程序假如开太多的线程即使机器性能再好,也会慢如龟速,所以线程的控制就显得尤为重要了,线程的查看方法如下。

(1)在Devices面板中选中要查看的程序进程。


b876862c617aa62d7567173ab2507be63aff2f3a

堆的查看和管理:虽然当下的手机性能越来越好,手机内存当然也越来越大,但是程序过多地占用内存也是不允许的,这不仅会使程序显得很慢造成用户的不满,而且会造成程序的臃肿,甚至是瘫掉。作为合格的软件开发人员,必须严格地管理自己程序的内存使用情况,在条件允许的情况下,尽量去优化程序,用最小的内存完美地运行程序。堆的查看和管理方法如下。

(1)在Devices面板中选中要查看的程序进程。

(2)单击Devices面板右上角的Update Heap按钮。

(3)单击Heap选项卡,在该选项卡中单击Cause GC按钮,即可进行程序堆的详细查看和管理,如图1-18所示。

在Devices面板中,还可对某一进程进行“心电图”测试,具体步骤如下。

(1)选中要测试的进程。

(2)单击Devices面板右上角的star Method Profiling按钮。

(3)待程序运行一段时间后,单击Devices面板右上角的stop Method Profiling按钮,等待一段时间后,自动弹出“心电图”窗口,如图1-19所示。


59ecf5b6ec16149b1f8caae4eea88d16f8e6b8cb


62ae7ed29cdbb0ce7bfec67c2ca1a24f5e60e2ff

1.4.4 模拟器控制(Emulator Control)详解
Emulator Control顾名思义,即模拟器控制。通过Emulator Control面板(见图1-20)可以非常容易地使用模拟器模拟真实手机所具备的一些交互功能,如接听电话、模拟各种不同网络环境、模拟接收SMS消息和发生虚拟的地址坐标用于测试GPS相关功能等。

Telephony Status:通过选项模拟语音质量以及信号连接模式。
Telephony Actions:模拟电话接听和发送SMS到测试终端。
Location Controls:模拟地理坐标或者模拟动态的路线坐标变化并显示预设的地理标识,可以通过以下3种方式。
Manual:手动为终端发送经纬度坐标。
GPX:通过GPX文件导入序列动态变化地理坐标,从而模拟行进中GPS变化的数值。
KML:通过KML文件导入独特的地理标识,并以动态形式根据变化的地理坐标显示在测试终端。

1.4.5 File Explorer——SD Card文件管理器
File Explorer是Android SDK提供的管理SD Card的文件管理器。通过File Explorer可以查看程序对SD Card的使用情况,从而判断程序是否正确运行,具体步骤如下。

(1)选择要查看的模拟器。

(2)单击File Explorer选项卡,如图1-21所示。从图1-21中可以看到该管理器很类似于Windows的资源管理器,可以通过单击方便地查看任何文件。


214b0f7de336ced01f5db065474c4561852bda4c

(3)单击File Explorer选项卡右上角的两个按钮,可以方便地进行文件的导入和导出。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
15天前
|
移动开发 Java Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
【4月更文挑战第3天】在移动开发领域,性能优化一直是开发者关注的焦点。随着Kotlin的兴起,其在Android开发中的地位逐渐上升,但关于其与Java在性能方面的对比,尚无明确共识。本文通过深入分析并结合实际测试数据,探讨了Kotlin与Java在Android平台上的性能表现,揭示了在不同场景下两者的差异及其对应用性能的潜在影响,为开发者在选择编程语言时提供参考依据。
|
16天前
|
数据库 Android开发 开发者
构建高效Android应用:Kotlin协程的实践指南
【4月更文挑战第2天】随着移动应用开发的不断进步,开发者们寻求更流畅、高效的用户体验。在Android平台上,Kotlin语言凭借其简洁性和功能性赢得了开发社区的广泛支持。特别是Kotlin协程,作为一种轻量级的并发处理方案,使得异步编程变得更加简单和直观。本文将深入探讨Kotlin协程的核心概念、使用场景以及如何将其应用于Android开发中,以提高应用性能和响应能力。通过实际案例分析,我们将展示协程如何简化复杂任务,优化资源管理,并为最终用户提供更加流畅的体验。
|
17天前
|
开发框架 安全 Android开发
探索安卓系统的新趋势:智能家居应用的蓬勃发展
随着智能家居概念的兴起,安卓系统在智能家居应用领域的应用日益广泛。本文将探讨安卓系统在智能家居应用开发方面的最新趋势和创新,以及其对用户生活的影响。
13 2
|
20天前
|
缓存 监控 Java
构建高效Android应用:从优化用户体验到提升性能
在竞争激烈的移动应用市场中,为用户提供流畅和高效的体验是至关重要的。本文深入探讨了如何通过多种技术手段来优化Android应用的性能,包括UI响应性、内存管理和多线程处理。同时,我们还将讨论如何利用最新的Android框架和工具来诊断和解决性能瓶颈。通过实例分析和最佳实践,读者将能够理解并实施必要的优化策略,以确保他们的应用在保持响应迅速的同时,还能够有效地利用系统资源。
|
20天前
|
Java Android开发
Android 开发获取通知栏权限时会出现两个应用图标
Android 开发获取通知栏权限时会出现两个应用图标
12 0
|
17天前
|
Java Android开发 开发者
构建高效Android应用:Kotlin协程的实践与优化
在响应式编程范式日益盛行的今天,Kotlin协程作为一种轻量级的线程管理解决方案,为Android开发带来了性能和效率的双重提升。本文旨在探讨Kotlin协程的核心概念、实践方法及其在Android应用中的优化策略,帮助开发者构建更加流畅和高效的应用程序。通过深入分析协程的原理与应用场景,结合实际案例,本文将指导读者如何优雅地解决异步任务处理,避免阻塞UI线程,从而优化用户体验。
|
4天前
|
搜索推荐 开发工具 Android开发
安卓即时应用(Instant Apps)开发指南
【4月更文挑战第14天】Android Instant Apps让用户体验部分应用功能而无需完整下载。开发者需将应用拆分成模块,基于已上线的基础应用构建。使用Android Studio的Instant Apps Feature Library定义模块特性,优化代码与资源以减小模块大小,同步管理即时应用和基础应用的版本。经过测试,可发布至Google Play Console,提升用户便利性,创造新获客机会。
|
5天前
|
Java API 调度
安卓多线程和并发处理:提高应用效率
【4月更文挑战第13天】本文探讨了安卓应用中多线程和并发处理的优化方法,包括使用Thread、AsyncTask、Loader、IntentService、JobScheduler、WorkManager以及线程池。此外,还介绍了RxJava和Kotlin协程作为异步编程工具。理解并恰当运用这些技术能提升应用效率,避免UI卡顿,确保良好用户体验。随着安卓技术发展,更高级的异步处理工具将助力开发者构建高性能应用。
|
5天前
|
编解码 人工智能 测试技术
安卓适配性策略:确保应用在不同设备上的兼容性
【4月更文挑战第13天】本文探讨了提升安卓应用兼容性的策略,包括理解平台碎片化、设计响应式UI(使用dp单位,考虑横竖屏)、利用Android SDK的兼容工具(支持库、资源限定符)、编写兼容性代码(运行时权限、设备特性检查)以及优化性能以适应低端设备。适配性是安卓开发的关键,通过这些方法可确保应用在多样化设备上提供一致体验。未来,自动化测试和AI将助力应对设备碎片化挑战。
|
11天前
|
移动开发 API Android开发
构建高效Android应用:探究Kotlin协程的优势与实践
【4月更文挑战第7天】 在移动开发领域,性能优化和应用响应性的提升一直是开发者追求的目标。近年来,Kotlin语言因其简洁性和功能性在Android社区中受到青睐,特别是其对协程(Coroutines)的支持,为编写异步代码和处理并发任务提供了一种更加优雅的解决方案。本文将探讨Kotlin协程在Android开发中的应用,揭示其在提高应用性能和简化代码结构方面的潜在优势,并展示如何在实际项目中实现和优化协程。