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

简介:

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

1.4 DDMS的灵活应用
作为一名合格的软件开发人员,必须要学会怎样去调试程序。调试是一个程序员最基本的技能,其重要性甚至超过学好一门语言。那么什么是调试呢?所谓调试,就是在软件投入实际使用前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。这是保证软件系统正确性的必不可少的步骤。

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

1.4.1 初识DDMS
一般情况下,在Eclipse中安装了ADT插件后,Eclipse窗口的右上角会有DDMS的选项按钮图片 49,如图1-36所示。若DDMS按钮图片 50是隐藏的,读者可以通过Eclipse窗口界面右上角的图片 51(Open Perstective)按钮来打开DDMS,如图1-37所示。单击图片 52按钮即可切换到DDMS界面,如图1-38所示。


af693a9fe80260d4863ef552a49f695d79779e55

说明
该窗口的布局可自行调整,主要包括Devices(设备列表面板)、Emulator Control(模拟器控制器面板)、LogCat(日志显示面板)、Threads(线程监控面板)、Heap(内存堆监控面板)、Allocation Tracker(对象分布监控面板)、File Explorer(文件浏览器面板)等。

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

打开DDMS后单击LogCat选项卡,打开LogCat面板,默认看到的是模拟器所有的日志,如图1-39所示,其中包括verbose、debug、info、warn、error和assert共6种类别。开发人员可以使用Java中的System.out.println()方法来打印输出,辅助调试程序。运行程序后,打印输出的内容便显示在LogCat中,如图1-39所示。


25ef20591e56c44f366fc86cf95027f96dc75191

1.4.3 Devices的管理
Devices选项卡提供了软件截图的功能,可以方便地对多个模拟器和模拟器的进程、线程、堆等进行管理,如图1-42所示。其中Devices面板还可以与其他面板共同使用,例如Threads选项卡、Heap选项卡等,从而进行程序线程和堆的管理。

1.Devices简介
首先介绍Devices选项卡的基本功能,如图1-42所示,这里开启了两个Android模拟器,从图中可以看到两个模拟器都出现在了Devices选项卡面板中,名称分别为emulator-5554和emulator-5556,通过单击模拟器的名称,可以在多个模拟器中进行切换。


9c45cd417e45448ce6ca8823c57561f6baf3cd66

截图功能。在模拟器中运行程序,如需要对软件运行效果进行抓图,则可在需要抓图的界面停留,然后单击“Devices”选项卡右上角的“Screen Capture”按钮,显示截图对话框。在对话框中可以预览图片,并进行刷新、图片旋转、保存、复制等,如图1-43所示。
结束进程功能。先单击选中模拟器中要结束的进程,然后单击“Devices”选项卡右上角的“Stop Process”按钮,即可强制结束进程。如要结束模拟器中的“com.anroid.music”进程,如图1-44所示。


a1cc97f2fe1b4e40d9954a54c257fd30d28b732c

在“Devices”面板中,还可对某一进程进行“心电图”测试。首先选中要测试的进程,单击“Devices”面板右上角的“star Method Profiling”按钮,待程序运行一段时间后,单击“Devices”面板右上角的“stop Method Profiling”按钮,等待一段时间后,自动弹出“心电图”窗口,如图1-45所示。


5e6c0381202b461ee565fa1438df5c7688894ca3

2.Devices与Threads
上面介绍的只是“Devices”面板简单的两个功能,下面介绍Devices面板与Threads面板共同使用,进行程序线程的管理。一个程序假如开太多的线程即使机器性能再好,也会慢如龟速,所以线程的控制就显得尤为重要了,线程的查看方法如下。

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

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

(3)单击“Threads”选项卡,即可查看该进程的所有线程及线程的运行情况,如图1-46所示。


dfeff0ec93b54a03e28abc54d33ba0ea8d68e6a1

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

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

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

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


59ecf5b6ec16149b1f8caae4eea88d16f8e6b8cb

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


b7a6ed965591412f3b51f737edbdc02e181b97c4

Telephony Status:通过选项模拟语音质量以及信号连接模式。
Telephony Actions:模拟电话接听和发送SMS到测试终端。
Location Controls:模拟地理坐标或者模拟动态的路线坐标变化并显示预设的地理标识。
模拟地理坐标的三种方式为: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-49所示。从图1-49中可以看到该管理器很类似于Windows的资源管理器,可以通过单击方便地查看任何文件。

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

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
5天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
24 1
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
2天前
|
数据库 Android开发 开发者
安卓应用开发:构建高效用户界面的策略
【4月更文挑战第24天】 在竞争激烈的移动应用市场中,一个流畅且响应迅速的用户界面(UI)是吸引和保留用户的关键。针对安卓平台,开发者面临着多样化的设备和系统版本,这增加了构建高效UI的复杂性。本文将深入分析安卓平台上构建高效用户界面的最佳实践,包括布局优化、资源管理和绘制性能的考量,旨在为开发者提供实用的技术指南,帮助他们创建更流畅的用户体验。
|
2天前
android-agent-web中js-bridge案例
android-agent-web中js-bridge案例
10 2
|
2天前
|
移动开发 Java Android开发
构建高效Android应用:采用Kotlin协程优化网络请求
【4月更文挑战第24天】 在移动开发领域,尤其是对于Android平台而言,网络请求是一个不可或缺的功能。然而,随着用户对应用响应速度和稳定性要求的不断提高,传统的异步处理方式如回调地狱和RxJava已逐渐显示出局限性。本文将探讨如何利用Kotlin协程来简化异步代码,提升网络请求的效率和可读性。我们将深入分析协程的原理,并通过一个实际案例展示如何在Android应用中集成和优化网络请求。
|
2天前
|
调度 Android开发 开发者
构建高效Android应用:探究Kotlin协程的优势与实践
【4月更文挑战第24天】随着移动开发技术的不断演进,提升应用性能和用户体验已成为开发者的核心任务。在Android平台上,Kotlin语言凭借其简洁性和功能性成为主流选择之一。特别是Kotlin的协程功能,它为异步编程提供了一种轻量级的解决方案,使得处理并发任务更加高效和简洁。本文将深入探讨Kotlin协程在Android开发中的应用,通过实际案例分析协程如何优化应用性能,以及如何在项目中实现协程。
|
3天前
|
存储 缓存 安全
Android系统 应用存储路径与权限
Android系统 应用存储路径与权限
6 0
Android系统 应用存储路径与权限
|
3天前
|
存储 安全 Android开发
Android系统 自定义系统和应用权限
Android系统 自定义系统和应用权限
19 0
|
8天前
|
缓存 移动开发 Android开发
构建高效Android应用:从优化用户体验到提升性能表现
【4月更文挑战第18天】 在移动开发的世界中,打造一个既快速又流畅的Android应用并非易事。本文深入探讨了如何通过一系列创新的技术策略来提升应用性能和用户体验。我们将从用户界面(UI)设计的简约性原则出发,探索响应式布局和Material Design的实践,再深入剖析后台任务处理、内存管理和电池寿命优化的技巧。此外,文中还将讨论最新的Android Jetpack组件如何帮助开发者更高效地构建高质量的应用。此内容不仅适合经验丰富的开发者深化理解,也适合初学者构建起对Android高效开发的基础认识。
9 0
|
8天前
|
移动开发 Android开发 开发者
构建高效Android应用:采用Kotlin进行内存优化的策略
【4月更文挑战第18天】 在移动开发领域,性能优化一直是开发者关注的焦点。特别是对于Android应用而言,由于设备和版本的多样性,确保应用流畅运行且占用资源少是一大挑战。本文将探讨使用Kotlin语言开发Android应用时,如何通过内存优化来提升应用性能。我们将从减少不必要的对象创建、合理使用数据结构、避免内存泄漏等方面入手,提供实用的代码示例和最佳实践,帮助开发者构建更加高效的Android应用。
14 0
|
28天前
|
Java Android开发
Android 开发获取通知栏权限时会出现两个应用图标
Android 开发获取通知栏权限时会出现两个应用图标
14 0