Android开发实验教程.ppt
Android开发实验教程开发实验教程第一章第一章第一章第一章 AndroidAndroidAndroidAndroid概述概述概述概述第二章第二章第二章第二章 AndroidAndroidAndroidAndroid开发环境搭建开发环境搭建开发环境搭建开发环境搭建第三章第三章第三章第三章 AndroidAndroidAndroidAndroid的的的的Hello WorldHello WorldHello WorldHello World应用程序应用程序应用程序应用程序第四章第四章第四章第四章 AndroidAndroidAndroidAndroid用户界面开发用户界面开发用户界面开发用户界面开发第五章第五章第五章第五章 AndroidAndroidAndroidAndroid数据存储开发数据存储开发数据存储开发数据存储开发第六章第六章第六章第六章 AndroidAndroidAndroidAndroid开发开发开发开发实例实例实例实例第一章第一章 Android概述概述1.1 1.1 1.1 1.1 什么是什么是什么是什么是AndroidAndroidAndroidAndroid1.2 Android1.2 Android1.2 Android1.2 Android的体系结构的体系结构的体系结构的体系结构1.3 Android1.3 Android1.3 Android1.3 Android的应用程序的应用程序的应用程序的应用程序组件组件组件组件Android的发展的发展AndroidAndroid一词的本义指一词的本义指“机器人机器人”,20032003年美国有一家以年美国有一家以AndroidAndroid为名的小公司成立,开发手机平台。为名的小公司成立,开发手机平台。GoogleGoogle在在20052005年收购年收购AndroidAndroid之后,继续进行对之后,继续进行对AndroidAndroid系统开发系统开发。GoogleGoogle于于20072007年年1111月月5 5日发布了开源的日发布了开源的AndroidAndroid平台,并平台,并组建了开放手机联盟(组建了开放手机联盟(Open Handset AllianceOpen Handset Alliance),包括),包括GoogleGoogle、中国移动、中国移动、T-MobileT-Mobile、宏达电、高通、摩托罗拉、宏达电、高通、摩托罗拉等领军企业等领军企业Android的发展的发展在在GoogleGoogle及其开放手机联盟推出基于及其开放手机联盟推出基于LinuxLinux平台的开源手机平台的开源手机操作系统操作系统AndroidAndroid之后,之后,GoogleGoogle又不惜重金举办了又不惜重金举办了AndroidAndroid开发者大赛,吸引了众多开发者的目光。因为开发者大赛,吸引了众多开发者的目光。因为AndroidAndroid不仅不仅功能强大,而且具有开放和免费等先天优势,所以全球范围功能强大,而且具有开放和免费等先天优势,所以全球范围内的电信行业、手机制造商更是毫不犹豫地加入到内的电信行业、手机制造商更是毫不犹豫地加入到AndroidAndroid开放手机联盟中来。开放手机联盟中来。20082008年年9 9月月2222日,美国运营商日,美国运营商T-Mobile USAT-Mobile USA在纽约正式发在纽约正式发布了第一款基于布了第一款基于AndroidAndroid操作系统的手机操作系统的手机T-Mobile G1T-Mobile G1,这让更多的移动设备厂商看到了,这让更多的移动设备厂商看到了AndroidAndroid的光明前景都纷的光明前景都纷纷加入其中,甚至纷加入其中,甚至AndroidAndroid已经涉足上网本市场。中国移动已经涉足上网本市场。中国移动也在也在AndroidAndroid的基础之上推出了自己的操作系统的基础之上推出了自己的操作系统OMSOMS。Android的发展的发展20092009年年1 1季度季度 G1G1销售销售100100万支万支2009.3 MWC2009.3 MWC华为发布华为发布AndroidAndroid手机手机MotoMoto,三星,三星,LGLG计划计划20092009年下半年推出年下半年推出AndroidAndroid手机手机20092009 获得获得Orange,Vodafone,O2,TelefonicaOrange,Vodafone,O2,Telefonica支持支持20092009进军上网本进军上网本Android的特点的特点开放性开放性应用程序无界限应用程序无界限应用程序是在平等的条件下创建的应用程序是在平等的条件下创建的应用程序可以轻松地嵌入网络应用程序可以轻松地嵌入网络应用程序可以并行运行应用程序可以并行运行Android的特点的特点应用程序无界限:应用程序无界限:AndroidAndroid上的应用程序可以通过标准上的应用程序可以通过标准APIAPI访问核心移动设备功能。通过互联网,应用程序可以声明它访问核心移动设备功能。通过互联网,应用程序可以声明它们的功能可供其他应用程序使用。们的功能可供其他应用程序使用。Android的特点的特点应用程序是在平等的条件下创建的应用程序是在平等的条件下创建的:移动设备上的应用程序移动设备上的应用程序可以被替换或扩展,即使是拨号程序或主屏幕这样的核心组可以被替换或扩展,即使是拨号程序或主屏幕这样的核心组件。件。Android的特点的特点应用程序可以轻松地嵌入网络:应用程序可以轻松地嵌入应用程序可以轻松地嵌入网络:应用程序可以轻松地嵌入HTMLHTML、JavaScriptJavaScript和样式表,应用程序还可以通过和样式表,应用程序还可以通过WebViewWebView显示网络内容。显示网络内容。1.1 什么是什么是AndroidAndroidAndroid是一款针对移动设备的软件堆栈,其中包括操作系是一款针对移动设备的软件堆栈,其中包括操作系统(基于统(基于LinuxLinux内核)、中间件和关键应用程序。内核)、中间件和关键应用程序。基于基于AndroidAndroid平台的应用程序的开发,可以在平台的应用程序的开发,可以在Android Android SDKSDK(Software Development KitSoftware Development Kit,软件开发工具包)的,软件开发工具包)的帮助下使用帮助下使用JavaJava语言来完成。语言来完成。Android SDKAndroid SDK为我们提供了一组必要工具包和的为我们提供了一组必要工具包和的APIAPI(Application Programming InterfaceApplication Programming Interface,应用程序编,应用程序编程接口)。程接口)。1.1 什么是什么是AndroidAndroidAndroid采用采用LinuxLinux为操作系统,所以系统程序包含了为操作系统,所以系统程序包含了C C语言语言的标准函数库的标准函数库。应用程序主要以应用程序主要以JavaJava语言在语言在Dalvik VMDalvik VM虚拟机上执行虚拟机上执行。应用程序开发环境以应用程序开发环境以EclipseEclipse为主,加上为主,加上Android Android Development Tools(ADT)Development Tools(ADT)插件及插件及Android SDKAndroid SDK。AndroidAndroid平台的主旨是提供一个应用程序架构(平台的主旨是提供一个应用程序架构(Application Application FrameworkFramework),好让各家),好让各家OEMOEM厂商可不必从头进行软件开厂商可不必从头进行软件开发,就能推出一系列的发,就能推出一系列的AndroidAndroid平台手机。平台手机。Android通常通常拥有的拥有的特性特性(1)Application framework(1)Application framework:提供可重复使用及改写的组件。:提供可重复使用及改写的组件。(2)Dalvik virtual machine(2)Dalvik virtual machine:提供给移植设备一个优化过的:提供给移植设备一个优化过的JavaJava虚拟机。虚拟机。(3)Integrated browser(3)Integrated browser:基于开放源码的:基于开放源码的WebKitWebKit引擎的一个引擎的一个浏览器,像浏览器,像MacMac上的上的SafariSafari也是从也是从WebKitWebKit衍生出来的。衍生出来的。(4)Optimized graphics(4)Optimized graphics:优化过的绘图函数库,包含了:优化过的绘图函数库,包含了SGLSGL的的2D2D绘图函数库及基于绘图函数库及基于OpenGL ES 1.0OpenGL ES 1.0规范的规范的3D3D绘图函数库。绘图函数库。(5)SQLite(5)SQLite:一个结构化的数据库系统。:一个结构化的数据库系统。Android通常通常拥有的拥有的特性特性(6)Media support(6)Media support:多媒体影音格式的支持,包含了:多媒体影音格式的支持,包含了MPEG4MPEG4,H.264H.264,MP3MP3,AACAAC,AMRAMR,JPGJPG,PNGPNG,GIFGIF。(7)GSM(7)GSM:GSMGSM手机的通话能力其实必须在硬件电路层次实现,手机的通话能力其实必须在硬件电路层次实现,软件层次无法实现,只是软件层次无法实现,只是AndroidAndroid平台要求必须要有平台要求必须要有GSMGSM通话通话能力,此项功效特点与其说是特性,不如说是订立出最低的硬能力,此项功效特点与其说是特性,不如说是订立出最低的硬件要求规范。件要求规范。(8)Bluetooth,EDGE,3G,(8)Bluetooth,EDGE,3G,Wi-Fi,Wi-Fi,camera,GPS,compass,camera,GPS,compass,and accelerometerand accelerometer:同:同GSMGSM一样,它必需由实际硬件决定是一样,它必需由实际硬件决定是否支持。否支持。(9)Rich development environment(9)Rich development environment:包含了设备模拟器,调:包含了设备模拟器,调试工具,内存及性能评估分析工具及让试工具,内存及性能评估分析工具及让Eclipse IDEEclipse IDE支持支持AndroidAndroid项目的插件项目的插件。1.2 Android的的体系结构体系结构AndroidAndroid的体系结构分成的体系结构分成(1)Applications(1)Applications,(2)Application(2)Application FrameworkFramework,(3)Libraries(3)Libraries,(4)Android Runtime(4)Android Runtime,(5)Linux Kernel(5)Linux Kernel五大部分。五大部分。AndroidAndroid本身是一套软件堆栈(本身是一套软件堆栈(Software StackSoftware Stack),或称为),或称为“软件迭层架构软件迭层架构”,迭层主要分成三层:操作系统、中间件,迭层主要分成三层:操作系统、中间件(MiddlewareMiddleware)、应用程序。想开发可在)、应用程序。想开发可在AndroidAndroid平台上平台上运行的应用程序,可用运行的应用程序,可用JavaJava程序语言编写。程序语言编写。1.2 Android的体系结构的体系结构ApplicationsAndroidAndroid系统自带的应用程序通常包含有电子邮件程序、短系统自带的应用程序通常包含有电子邮件程序、短信程序、日历、地图、浏览器、通讯录程序等,所有的应用信程序、日历、地图、浏览器、通讯录程序等,所有的应用程序都由程序都由JavaJava语言编写。语言编写。Application Framework应用程序开发人员在编写应用程序时可以完整的使用统一的应用程序开发人员在编写应用程序时可以完整的使用统一的APIAPI接口接口。这个应用程序框架是可以容易重复使用各种组件,这样应用这个应用程序框架是可以容易重复使用各种组件,这样应用程序就可以只需提供出它自己本身的特殊功能程序就可以只需提供出它自己本身的特殊功能。应用程序还可以较容易的去使用其它程序的特殊功能。这种应用程序还可以较容易的去使用其它程序的特殊功能。这种统一机制,有助于开发人员去编写自己新的软件组件,而不统一机制,有助于开发人员去编写自己新的软件组件,而不用编写一些已经存在的重复代码,提高开发效率。用编写一些已经存在的重复代码,提高开发效率。Application Framework组组件件(1)Views System(1)Views System(视图系统)(视图系统)(2)Content Providers(2)Content Providers(内容提供器)(内容提供器)(3)Resource Manager(3)Resource Manager(资源管理器)(资源管理器)(4)Notification Manager(4)Notification Manager(通知管理器)(通知管理器)(5)Activity Manager(5)Activity Manager(活动管理器)(活动管理器)Application Framework组组件件(6)Window Manager(6)Window Manager(窗口管理器)(窗口管理器)(7)Location Manager(7)Location Manager(定位管理器)(定位管理器)(8)Telephony Manager(8)Telephony Manager(电话管理器)(电话管理器)(9)Package Manager(9)Package Manager(包管理器)(包管理器)(10)XMPP Service(10)XMPP Service:eXtensible Messaging and eXtensible Messaging and Presence ProtocolPresence ProtocolLibraries(1)System C library(1)System C library:一个由:一个由BSDBSD衍生出来的标准衍生出来的标准C C系统函数系统函数库库(libc)(libc),这个函数库已针对,这个函数库已针对LinuxLinux嵌入式设备进行过优化。嵌入式设备进行过优化。(2)Media Libraries(2)Media Libraries:基于:基于PacketVideos OpenCOREPacketVideos OpenCORE的多媒的多媒体函数库;这个多媒体函数库支持播放和录制许多现在很流行体函数库;这个多媒体函数库支持播放和录制许多现在很流行的声音及影像格式。比如:的声音及影像格式。比如:MPEG4MPEG4,H.264H.264,MP3MP3,AACAAC,AMRAMR,JPGJPG及及PNGPNG。(3)Surface Manager(3)Surface Manager:这个部份让开发者可以去存取显示系统,:这个部份让开发者可以去存取显示系统,以及无接缝的实现以及无接缝的实现2D/3D2D/3D多应用程序之间的整合。多应用程序之间的整合。(4)LibWebCore(4)LibWebCore:一个先进的网页浏览器引擎。:一个先进的网页浏览器引擎。(5)SGL(5)SGL:2D2D图形引擎图形引擎库。库。Libraries(6)3D Libraries(6)3D Libraries:一个基于:一个基于OpenGL ES 1.0OpenGL ES 1.0规范的规范的3D3D图像引图像引擎库。它可以选择硬件的擎库。它可以选择硬件的3D3D加速或高度优化的加速或高度优化的3D3D软件程序去软件程序去实现效果。实现效果。(7)Free Type(7)Free Type:位图及矢量字形。:位图及矢量字形。(8)SQLite(8)SQLite:SQLiteSQLite是一套开放源码的关系数据库,供是一套开放源码的关系数据库,供AndroidAndroid上所有的应用程序使用。其特点在于轻量型(仅上所有的应用程序使用。其特点在于轻量型(仅500KB500KB左右的大小),适合手持式设备使用;此外桌面型计算左右的大小),适合手持式设备使用;此外桌面型计算的应用程序也有使用,如的应用程序也有使用,如OpenOffice.org 2.0OpenOffice.org 2.0版之后就有内建版之后就有内建的的SQLiteSQLite。(9)SSL-Secure Socket Layer(9)SSL-Secure Socket Layer,专门用于保护网页通讯的协,专门用于保护网页通讯的协议。议。Android RuntimeAndroidAndroid虽然使用虽然使用JavaJava程序语言来开发、编写应用程序,但却程序语言来开发、编写应用程序,但却不使用一般大家目前在用的不使用一般大家目前在用的Java RuntimeJava Runtime(J2MEJ2ME)版本来执)版本来执行行JavaJava程序,而是用程序,而是用AndroidAndroid自有的自有的Android RuntimeAndroid Runtime来执行。来执行。Android RuntimeAndroid Runtime包含下面两个核心包含下面两个核心。(1)Core Libraries(1)Core Libraries(2)Dalvik Virtual Machine2)Dalvik Virtual MachineLinux KernelAndroidAndroid平台的操作系统使用的是平台的操作系统使用的是LinuxLinux,其核心版本为,其核心版本为2.62.6版版AndroidAndroid所用的所用的LinuxLinux核心,包含的功能主要有:安全核心,包含的功能主要有:安全(SecuritySecurity)、内存管理()、内存管理(Memory ManagementMemory Management)、进)、进程管理(程管理(Process ManagementProcess Management)、网络堆栈()、网络堆栈(Network Network StackStack)、驱动程序模型()、驱动程序模型(Driver ModelDriver Model)等)等另外在前述的软件堆栈与硬件间建立起一个抽象层另外在前述的软件堆栈与硬件间建立起一个抽象层(Abstraction LayerAbstraction Layer)。)。1.3 Android的应用程序的应用程序组件组件ActivityActivityServiceServiceContentProviderContentProviderBroadcastReceiverBroadcastReceiver第二章第二章 Android开发环境搭建开发环境搭建2.1 2.1 2.1 2.1 下载并安装下载并安装下载并安装下载并安装JDKJDKJDKJDK2.2 2.2 2.2 2.2 下载并安装下载并安装下载并安装下载并安装SDKSDKSDKSDK2.32.32.32.3下载并安装下载并安装下载并安装下载并安装eclipseeclipseeclipseeclipse2.4 2.4 2.4 2.4 下载并安装下载并安装下载并安装下载并安装ADTADTADTADT工具包关系工具包关系AndroidAndroid的开发环境指用于开发的开发环境指用于开发AndroidAndroid应用程序所需要的基本应用程序所需要的基本的开发工具,主要包括四个部分,分别是的开发工具,主要包括四个部分,分别是JDKJDK、eclipseeclipse、ADTADT及及Android SDKAndroid SDK。2.1 下载并安装下载并安装JDK(1)(1)下载最新的下载最新的JDKJDK,下载地址为:,下载地址为:http:/http:/2.1 下载并安装下载并安装JDK(2)(2)安装安装JDKJDK(3)(3)配置配置JDKJDK2.1 下载并安装下载并安装JDK(4)(4)测试测试JDKJDK2.2 下载并安装下载并安装SDK(1)(1)下载下载Android SDKAndroid SDK,我们可以到,我们可以到http:/http:/下载地址下载地址2.2 下载并安装下载并安装SDK(2)(2)安装安装Android SDKAndroid SDK2.2 下载并安装下载并安装SDK(3)(3)下载下载Android SDKAndroid SDK的其他组件的其他组件2.2 下载并安装下载并安装SDK(4)(4)配置配置Android SDKAndroid SDK2.2 下载并安装下载并安装SDK(5)(5)测试测试Android SDKAndroid SDK的配置的配置2.3下载并安装下载并安装eclipse(1)(1)下载下载eclipseeclipse2.3下载并安装下载并安装eclipse(2)(2)安装安装eclipseeclipse2.4 下载并安装下载并安装ADTADTADT是是GoogleGoogle为为AndroidAndroid开发者提供的开发者提供的EclipseEclipse插件,可以很方插件,可以很方便的开发应用程序,下面我们来安装和安装便的开发应用程序,下面我们来安装和安装ADTADT插件,步骤如插件,步骤如下:下:(1)(1)下载下载ADTADT。我可以在。我可以在http:/http:/找到找到ADTADT的下载链接的下载链接2.4 下载并安装下载并安装ADT(2)(2)安装安装ADTADT2.4 下载并安装下载并安装ADT(3)(3)配置配置ADTADT第三章第三章Hello World应用程序应用程序3.1 3.1 3.1 3.1 创建创建创建创建Hello WorldHello WorldHello WorldHello World应用程序应用程序应用程序应用程序3.2 3.2 3.2 3.2 应用程序结构分析应用程序结构分析应用程序结构分析应用程序结构分析3.3 3.3 3.3 3.3 调试应用程序调试应用程序调试应用程序调试应用程序3.4 3.4 3.4 3.4 导入已存在项目导入已存在项目导入已存在项目导入已存在项目3.1 创建创建Hello World应用程序应用程序ADTADT提供了简单的生成提供了简单的生成AndroidAndroid应用框架的功能,我们现在应用框架的功能,我们现在使用使用ADTADT通过通过EclipseEclipse创建一个创建一个AndroidAndroid工程。工程。在创建工程之前,首先要有一个运行应用程序的环境,可以在创建工程之前,首先要有一个运行应用程序的环境,可以是真实的是真实的AndroidAndroid手机,也可以是模拟器。这里使用模拟器手机,也可以是模拟器。这里使用模拟器的方式,即使用的方式,即使用AVDAVD来运行我们的应用程序。来运行我们的应用程序。什么是什么是AVD从从Android 1.5Android 1.5开始引入了开始引入了AVDAVD(Android Virtual DeviceAndroid Virtual Device)这个概念。这个概念。AVDAVD是一个经过配置的模拟器。在创建是一个经过配置的模拟器。在创建AVDAVD时可以配置的选项时可以配置的选项有:模拟器影像大小、触摸屏、轨迹球、摄像头、屏幕分辨率、有:模拟器影像大小、触摸屏、轨迹球、摄像头、屏幕分辨率、键盘、键盘、GSMGSM、GPSGPS、AudioAudio录放、录放、SDSD卡支持、缓存区大小等。卡支持、缓存区大小等。创建创建AVD下面我们便来配置下面我们便来配置AndroidAndroid模拟器,具体步骤如下所示模拟器,具体步骤如下所示。(1)(1)打开打开“Android SDK and AVD ManagerAndroid SDK and AVD Manager”创建创建AVD(2)(2)新建新建AVDAVD创建创建AVD(3)(3)运行运行AVDAVD3.2 应用程序应用程序结构分析结构分析“Package ExplorerPackage Explorer”导航器中的导航器中的“HelloWorldHelloWorld”项目项目R.javaR.javaR.java是在建立项目时自动生成的,这个文件是只读模式,不是在建立项目时自动生成的,这个文件是只读模式,不能更改,能更改,R.javaR.java文件是定义该项目所有资源的索引文件。先来文件是定义该项目所有资源的索引文件。先来看看看看“HelloWorldHelloWorld”项目的项目的R.javaR.java文件文件AndroidManfest.xmlAndroidManfest.xmlAndroidManfest.xml文件则包含了该项目中所使用的文件则包含了该项目中所使用的ActivityActivity、ServiceService、ReceiverReceiver,我们先来打开,我们先来打开“HelloWorldHelloWorld”项目中的项目中的AndroidManfest.xmlAndroidManfest.xml文件文件String.xml资源文件中一些常量的定义资源文件中一些常量的定义main.xml“HelloWorldHelloWorld”项目的布局文件(项目的布局文件(layoutlayout)布局和参数布局和参数LinearLayoutLinearLayoutandroid:orientationandroid:orientation:表示这个介质的版面配置方式是从上到下垂直地排:表示这个介质的版面配置方式是从上到下垂直地排列其内部的视图。列其内部的视图。android:orientationandroid:orientation:表示这里是水平排列:表示这里是水平排列android:layout_widthandroid:layout_width:定义当前视图在屏幕上所占的宽度,:定义当前视图在屏幕上所占的宽度,fill_parentfill_parent即填充整个屏幕。即填充整个屏幕。android:layout_heightandroid:layout_height:定义当前视图在屏幕上所占的高度,:定义当前视图在屏幕上所占的高度,fill_parentfill_parent即填充整个屏幕。即填充整个屏幕。wrap_contentwrap_content:随着文字栏位的不同而改变这个视图的宽度或高度。:随着文字栏位的不同而改变这个视图的宽度或高度。layout_weightlayout_weight:用于给一个线性布局中的多个视图的重要度赋值:用于给一个线性布局中的多个视图的重要度赋值。布局和参数布局和参数TextViewTextViewandroid:layout_widthandroid:layout_width为整个屏幕的为整个屏幕的宽度宽度android:layout_heightandroid:layout_height可以根据文字来改变可以根据文字来改变高度高度android:textandroid:text则设置了这个则设置了这个TextViewTextView要显示的文字内容,这里要显示的文字内容,这里引用了引用了stringstring中的中的hellohello字符串,即字符串,即String.xmlString.xml文件中的文件中的hellohello所代表的字符串资源。所代表的字符串资源。hellohello字符串的内容字符串的内容“Hello World,Hello World,HelloWorld!HelloWorld!”这就是我们在这就是我们在“HelloWorldHelloWorld”项目运行时看到项目运行时看到的字符串。的字符串。HelloWorld.java主程序主程序HelloWorldHelloWorld类继承自类继承自ActivityActivity类,重写了类,重写了void void onCreate(Bundle savedInstanceState)onCreate(Bundle savedInstanceState)方法。方法。在在onCreateonCreate方法中通过方法中通过setContentView(R.layout.main)setContentView(R.layout.main)设置设置了了ActivityActivity要显示的布局文件(要显示的布局文件(layoutmain.xmllayoutmain.xml)。)。结构特点结构特点以上的应用程序结构是以上的应用程序结构是AndroidAndroid开发的特点,这样可以很轻开发的特点,这样可以很轻松地将代码和松地将代码和UIUI(User InterfaceUser Interface,用户接口;用户界面),用户接口;用户界面)分开,在国际化和程序维护方面有着巨大的作用分开,在国际化和程序维护方面有着巨大的作用。如果如果AndroidAndroid程序需要自适应国际化,比如说多国语言等问程序需要自适应国际化,比如说多国语言等问题,那么就可以定义不同语言的题,那么就可以定义不同语言的UIUI布局,在程序装载时调用布局,在程序装载时调用不同的布局不同的布局。而且而且,如果需要修改,如果需要修改UIUI的一些问题,就不必查看代码了,直的一些问题,就不必查看代码了,直接更改这些布局文件即可接更改这些布局文件即可。当然当然,这需要开发者在开发时使用这种,这需要开发者在开发时使用这种MVCMVC框架,尽量减少框架,尽量减少使用使用“硬编码硬编码”。3.3 调试调试应用程序应用程序在在eclipseeclipse开发工具中调试程序的方法很多,但是使用开发工具中调试程序的方法很多,但是使用eclipseeclipse调调试试AndroidAndroid程序时需要注意一些细节上的问题程序时需要注意一些细节上的问题。DDMSDDMS的使用的使用断点的断点的使用使用adbadb的使用的使用DDMS的的使用使用在在eclipse+ADTeclipse+ADT的开发环境中没有直接跟踪对象内容的方法,但的开发环境中没有直接跟踪对象内容的方法,但是我们可以使用是我们可以使用GoogleGoogle提供的提供的ADTADT插件插件DDMSDDMS(Dalvik Debug Dalvik Debug Monitor ServiceMonitor Service)在)在eclipseeclipse上轻松地调试上轻松地调试AndroidAndroid程序程序。DDMSDDMS为我们提供了许多功能,例如:测试设备截屏,针对特定的为我们提供了许多功能,例如:测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息,进程查看正在运行的线程以及堆信息,LogCatLogCat,广播状态信息,广播状态信息,模拟电话呼叫,接收模拟电话呼叫,接收SMSSMS,虚拟地理坐标,虚拟地理坐标等等等等(1)(1)切换到切换到DDMSDDMS的方法的方法(2)LogCat(2)LogCat使用使用(3)File Explorer(3)File Explorer使用使用切换到切换到DDMS的方法的方法切换到切换到DDMS的方法的方法在在“DDMSDDMS”界面中选择界面中选择“DevicesDevices”标签,查看其菜单的标签,查看其菜单的功能,我们可以看到功能,我们可以看到Debug ProcessDebug Process(调试进程)、(调试进程)、Update ThreadsUpdate Threads(更新线程)、(更新线程)、Update HeapUpdate Heap(更新堆)、(更新堆)、Cause GCCause GC(引起垃圾回收)、(引起垃圾回收)、Stop ProcessStop Process(停止进程)、(停止进程)、Screen CaptureScreen Capture(屏幕截图)、(屏幕截图)、Reset adbReset adb(重启(重启Android Android Debug BridgeDebug Bridge)菜单选项,如图)菜单选项,如图5151所示。所示。AndroidAndroid程序运行时的各种状态,比如进程信息、线程分析、程序运行时的各种状态,比如进程信息、线程分析、堆内存的占用,结束一个进等程。当然,这些操作都是在堆内存的占用,结束一个进等程。当然,这些操作都是在DDMSDDMS框架下进行的,日常开发的程序是无法执行调用的。框架下进行的,日常开发的程序是无法执行调用的。如果如果adbadb调试桥运行不稳定,可以选择调试桥运行不稳定,可以选择“reset adbreset adb”来重新来重新启动启动“adb.exeadb.exe”进程。进程。LogCat使用使用“LogCatLogCat”通过通过“android.util.Logandroid.util.Log”类的静态方法来查找错误和类的静态方法来查找错误和打印系统日志消息。它是一个进行日志输出的打印系统日志消息。它是一个进行日志输出的APIAPI,我们在,我们在AndroidAndroid程序中可以随时为某一个对象插入一个程序中可以随时为某一个对象插入一个LogLog,然后在,然后在DDMSDDMS中观察中观察LogCatLogCat的输出是否正常。的输出是否正常。android.util.Logandroid.util.Log常用的方常用的方法有以下法有以下5 5个:个:Log.v(String tag,String msg);Log.v(String tag,String msg);Log.d(String tag,String msg);Log.d(String tag,String msg);Log.i(String tag,String msg);Log.i(String tag,String msg);Log.w(String tag,String msg);Log.w(String tag,String msg);Log.e(String tag,String msg);Log.e(String tag,String msg);LogCat使用使用这这5 5种方法的首字母分别对应种方法的首字母分别对应VERBOSEVERBOSE、DEBUGDEBUG、INFOINFO、WARNWARN、ERRORERROR。当利用当利用DDMSDDMS进行调试时,它们的区别并不大,只是显示的进行调试时,它们的区别并不大,只是显示的颜色不同,我们可以控制要显示的某一类错误,一般我们如颜色不同,我们可以控制要显示的某一类错误,一般我们如果使用果使用“断点断点”方式来调试程序,则使用方式来调试程序,则使用Log.eLog.e比较合适。比较合适。但是根据规范建议但是根据规范建议Log.vLog.v,Log.dLog.d信息应当只存在于开发过程信息应当只存在于开发过程中,最终版本只可以包含中,最终版本只可以包含Log.iLog.i,Log.wLog.w,Log.eLog.e这三种日志这三种日志信息。信息。LogC