《Google Android开发技术》课件第3章_第1页
《Google Android开发技术》课件第3章_第2页
《Google Android开发技术》课件第3章_第3页
《Google Android开发技术》课件第3章_第4页
《Google Android开发技术》课件第3章_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章Android应用程序框架3.1HelloWorld工程

3.2HelloWorld工程工作原理

3.3应用程序框架

3.4Activity生命周期

3.5小结

3.1HelloWorld工程

绝大多数程序设计语言的教科书均以显示“Helloworld!”字符串的工程作为第一个程序实例,称这个工程为“HelloWorld工程”。而且,大部分高级程序设计语言几乎只要输入一句代码就可以实现这个功能。在Android下实现HelloWorld工程也非常方便,甚至不用输入代码,下面介绍基于Eclipse软件创建Android的HelloWorld工程的过程。

例3.1

显示“HelloWorld”工程。

在Eclipse集成开发环境(如图1-7)下点击菜单“File|New|Project…”(如图3-1所示),弹出如图3-2所示窗口。图3-1“File|New”菜单项图3-2新建工程对话框在图3-2中选择建设的工程类型为“AndroidProject”,点击“Next”按钮进入图3-3所示界面。图3-3新建Android工程对话框在图3-3中输入“MinSDKVersion”为10,即使用API的级别为10。然后,点击“Finish”按钮,进入图3-4所示界面。图3-4ex03_01工程图3-4是按照Android新建工程向导生成的工程ex03_01,左边为包浏览器,显示了工程ex03_01的目录和文件结构(后面结合图3-7说明);右边显示了MyHelloAct.java文件的内容。在图3-4中点击“OpenstheAndroidSDKandAVDManager”快捷按钮,启动AndroidSDK模拟器myAVD233SD64,如图1-22所示。等模拟器myAVD233SD64启动就绪后,在图3-4中选中工程ex03_01,点击菜单“Run|Runas|AndroidApplication”,如图3-5所示。工程ex03_01的执行结果如图3-6所示,即在模拟器myAVD233SD64中显示一行文字“HelloWorld,MyHelloAct!”,显示窗口标题名为MyHelloApp,即应用名。因此,只需要按照Android新建工程向导就可以生成一个显示“HelloWorld!”的工程,无需程序员输入一句代码。图3-5“RunAs”菜单图3-6工程ex03_01运行结果执行Android新建工程向导创建工程ex03_01后,将在工作目录“D:\myWorkspace”下创建一个新目录即ex03_1,如图3-7所示。目录ex03_01下有子目录assets、bin、gen、res、src。其中res和assets均存放资源文件,分别称为资源文件子目录和资产文件子目录,res资源文件被资源管理器自动生成识别号(ID)存放在“gen\cn\jxufe\zhangenhe”目录下的R.java文件中,可被Java程序通过访问ID号直接访问;而assets目录的资产文件的访问需要指定访问路径。src子目录为Java源程序存放的目录即MyHelloAct.java存放在目录“src\cn\jxufe\zhangenhe”下。Bin子目录下为编译生成的目标文件,包括可执行文件classes.dex和压缩安装包文件ex03_01.apk,如图3-7所示。图3-7工程ex03_01目录结构比较图3-7和图3-4中的包浏览器可见,如果把包浏览器中的“cn.jxufe.zhangenhe”视为目录树“cn\jxufe\zhangenhe”,那么包浏览器的结构与图3-7的目录结构完全对应,包浏览器提供了快速访问工程ex03_01中需要程序员管理的目录和文件。此外,它还提供了“Android2.3.3”目录,该目录下为Android框架层的库文件和资源。创建工程时输入的包名为cn.jxufe.zhangenhe,除了用于作为类的容器外,还用作保存程序文件及其编译的目标文件的目录树。

3.2HelloWorld工程工作原理

对于传统的面向过程C语言程序,其程序执行入口为main函数,程序的运行就是main函数中各条语言按语法规则依次执行。对汇编语言程序设计熟悉的程序员,以及那些做过DSP或单片机开发的程序员,对程序的运行有着深刻的认识。CPU(中央处理单元)总是执行其PC(程序计数器寄存器)指针指向的程序空间地址处的指令代码,对于分支和跳转程序需要修改PC的值。对于汇编语言程序设计而言,程序的执行过程非常清晰,程序员负责所有的资源调用,并安排程序指令的执行。汇编语言与程序实现的算法和功能的细节直接相关,开发这类程序需要专业开发人员,难度相对较大。高级语言是接近自然语言的一种程序设计语言,当基于这种高级语言的应用程序设计越简单,那么这类应用程序的执行过程越不容易被理解。Android应用程序基于Java高级语言和Dalvik虚拟机,它的执行过程比传统的Java程序(例如第二章的程序)更难理解,这时往往需要按Android应用程序设计的规定方法即按照Android框架进行程序设计,并理解其程序的执行过程。事实上,不可能做到像理解汇编语言程序的执行过程一样理解Android程序的执行过程。

在AndroidSDK安装目录的docs目录下,即“D:\android-sdk-windows\docs”目录下,打开文件“index.html”,可进入到Android开发者参考手册,如图3-8所示。图3-8Android开发者参考手册从图3-8中找到Application类的公有方法onCreate,该方法是应用程序启动时首先执行的方法即“Calledwhentheapplicationisstarting,beforeanyotherapplicationobjectshavebeencreated.”(当应用程序要执行时被调用,其他任务应用程序对象都还没有创建)。从第二章的学习知道,一个类的公有方法的调用有两种途径即被该类的实例调用或被该类中的方法调用。因此,可以推断该方法将被Application中的某个静态方法(可能就是mian方法)调用。所以,从Android开发者手册可知,Android程序的执行入口是Application类的onCreate方法。对于显示“HelloWorld”的Android应用程序工程ex03_01来说,其程序执行入口也是Application类的OnCreate方法。在ex03_01工程中有一个文件AndroidManifest.xml,该文件内容是XML语言的程序。XML是eXtensibleMarkupLanguage的缩写,译为可扩充标记语言,这类语言不像C或Java语言等可执行高级语言,XML语言是不可执行的。它的优点在于格式统一且固定,用于为其他高级语言指定(或标记、配置)其数据或资源的位置和相互关系。例如,Java语言界面中需要使用一个按钮,可以使用XML语言为按钮指定名称、大小和字体等属性,Java程序在执行时按XML提供的信息要求调用或显示该按钮。工程ex03_01的文件AndroidManifest.xml中通过以下语句指定应用程序启动后执行的Activity。这段代码还将在第2.3节中详细介绍,这里第1、10行说明这两行中间的内容属于应用application,第2~8行说明了应用中包含了一个名为MyHelloAct的活动界面(Activity),第5行说明该活动界面是主界面(MAIN)。因此,应用类Application的onCreate启动后,将转到类MyHelloAct去执行,该类位于MyHelloAct.java文件中。MyHelloAct.java文件的代码如下:上述代码中,第6行定义了MyHelloAct类,该类继承了类Activity,类MyHelloAct中仅有一个方法即onCreate方法,该方法覆盖了其父类Activity的同名方法。由于类MyHelloAct的onCreate方法是公有方法,因此要想调用该方法,必须先创建MyHelloAct类的实例(对象)。但是,这一步工作由Android框架帮程序员完成了,即Android框架帮程序员定义了类MyHelloAct的实例(对象)并通过其对象调用了onCreate方法。所以,ex03_01工程从开始执行到执行到类MyHelloAct的onCreate方法之前所做的工作都被Android框架隐藏了,程序员会误认为工程ex03_01最开始执行的是第9行的onCreate方法。根据上面的解释可知,工程ex03_01启动后,Android操作系统框架层会引导它执行到类MyActivity的onCreate方法。假设Android框架层为类MyActivity创建的对象名为myHelloObj,整个ex03_01工程启动后成为Android系统的一个进程(Android系统中每个应用程序对应着一个进程),该进程通过对象myHelloObj执行其onCreate方法。第10行以其父类的方法onCreate初始化对象myHelloObj继承的父类Activity中的公有和保护数据。第11行以setContentView方法使用布局R.layout.main设置活动界面内容,这里的方法setContentView是类Activity的公有方法,可以直接被其子类MyActivity的对象调用。类Activity中有三种重载形式的setContentView方法,这里调用的方法原型为:

publicvoidsetContentView(intlayoutResID);

参数layoutResID被设置为R.layout.main(第11行),如图3-9所示。图中R.java为自动生成的文件(不能修改),该文件中只有一个类,名为R,其中还有一个内部类即:

1publicstaticfinalclasslayout{

2publicstaticfinalintmain=0x7f030000;

3}

该类为公有静态类,且用final修饰,表示该类不能派生新类。该类中有一个公有静态整型常量main(第2行),这里的main对应于图3-9中资源res中的main.xml文件,即这里的R.layout.main是main.xml的标识符,所以语句setContentView(R.layout.main)将设置活动界面的内容为main.xml。图3-9包浏览器上述代码是XML格式,第2行说明布局为线性布局(即该布局的控件按行或列顺序逐个依次摆放)。第7~11行表示这是一个静态文本框(或文本视图),其宽度与活动界面宽度相同(fill_parent);其高度为显示的字符高度(wrap_content);显示的字符串为“@string/hello”,表示显示图3-9中R.layout.string.hello指向的字符串,即图3-9中资源res中的strings.xml中名为hello的字符串。文件strings.xml的内容为:

1<?xmlversion="1.0"encoding="utf-8"?>

2<resources>

3<stringname="hello">HelloWorld,MyHelloAct!</string>

4<stringname="app_name">MyHelloApp</string>

5</resources>从上述代码中,可见名为hello的字符串值为“HelloWorld,MyHelloAct!”(第3行)即将这一行字符串的值显示在活动界面中,如图3-6所示。

现在通过执行对象myHelloObj的方法onCreate已经把显示内容准备好了,但是该活动界面还没有显示出来,Android框架还会自动通过对象myHelloObj调用onStart方法,该方法在工程ex03_01中没有体现。调用onStart方法后,ex03_01工程的界面就显示出来了。然后,Android框架还要自动通过对象myHelloObj调用onResume方法,该方法调用后ex03_01的活动界面将得到焦点,成为显示界面的“前台”界面。这些onStart方法、onResume方法以及onCreate方法都是类Activity的保护方法,将被其子类(这里是MyHelloAct)继承,因此可被其子类对象myHelloObj调用。经过上述的过程之后,才能得到如图3-6所示的界面。一旦该程序运行,将无法被人工关闭,用户可以通过点击模拟器的“Home”按钮回到欢迎界面,或者在图3-10中点击MyHelloApp应用程序图标重新进入“HelloWorld”界面。总之,该程序无法关闭。Android系统会自动管理那些没有显示(或没有使用)的应用程序,根据内存和应用程序的使用情况自动关闭那些不再被使用的应用程序,同时释放它们占用的内存空间。图3-10应用程序图标综上所述,对于Android程序员来说,只需要明白创建的用户活动界面类继承了类Activity,当应用程序开始执行时将自动执行其onCreate方法,程序员需要在onCreate方法中添加界面初始化的代码,然后将应用程序交给Android系统管理。对于工程ex03_01而言,在类MyHelloAct的onCreate方法中设置了包含字符串“HelloWorld!”的显示界面即完成了显示“HelloWorld”的任务。同时,Android应用程序中需要的各种显示元素均以资源的形式保存,并借助XML语言进行管理,而且整个Android应用都需要借助AndroidManifest.xml进行配置。结合图3-4,工程ex03_01中整个工程的配置文件为AndroidManifest.xml,这个文件只能有一个!位于资源res的layout下的XML文件均为布局文件,工程ex03_01中只有一个布局文件即main.xml,如果有多个Activity,则对应地有多个布局文件。在资源res的value下的文件为常量定义文件,可以有多个这类文件。工程ex03_01中只有一个字符串资源文件即strings.xml。所有XML文件内容均可以图形化地创建,例如可如图3-11所示创建常量字符串资源。在图3-11中,点击“Add…”按钮即可创建8类资源,其中选择String表示创建字符串。图3-11strings.xml图形界面

3.3应用程序框架

3.3.1应用程序框架基本组成

例3.2

应用程序框架实例。

新建工程ex03_02即工程文件名为ex03_02,其中应用名为MyFrameApp,包名为cn.jxufe.zhangenhe,活动界面(Activity)名为MyFrameAct,最小SDK版本号为10。工程ex03_02的结构如图3-12所示。在图3-12中,src目录用于存放程序员编写的Java源程序;gen目录是工程建立时自动生成的,包含了所有资源文件(位于res目录下)的索引号;Android2.3.3目录为Android系统包(或系统库),供应用程序调用,相当于C语言的函数库;assets目录称为资产文件目录,也是一种资源文件目录,与res目录下资源文件的不同之处在于,assets资产文件没有在gen目录中自动生成索引号,要使用这类文件必须指定完整的文件路径。res资源文件目录包含了项目所有可能使用的资源文件,例如图形文件、布局文件、常量文件等。AndroidManifest.xml是Android工程的全局配置文件;perties文件是自动生成的,包含使用的Android版本号;proguard.cfg文件是Java程序的优化配置文件,该文件也是自动生成的,其内容不需要干预。图3-12工程ex03_02文件和目录结构3.3.2Android配置文件AndroidManifest.xml

在图3-12中双击AndroidManifest.xml文件,将弹出如图3-13所示界面。AndroidManifest.xml有两种显示方式即图形化显示方式和文本显示方式,如图3-13状态栏中所示,其中状态栏的标签Manifest、Application、Permissions(用于设置使用权限)和Instruments(用于监视系统与应用程序间通信)为图形化工程配置方法,而标签AndroidManifest.xml为文本显示方式。笔者建议初学者使用这两种方式相结合的方法修改AndroidManifest.xml文件。由于工程ex03_02中只有一个活动界面,故图3-13中只有一个Activity即MyFrameAct,当需要显示多个界面时,必须将新的Activity添加到AndroidManifest.xml文件中,此时点击图3-13中的“Add…”按钮可实现图形化地添加工作。图3-13AndroidManifest.xml上述XML代码中,第1行说明XML版本为1.0,采用UTF-8编码方法。这种编码方法中,如果某个字符在Unicode码中的值小于256,则使用一个字符存储,这样可有效地节约存储空间。第2行的manifest与第18行的/manifest配对,表示这两行之间为配置内容,配置字段名使用“:”连接,例如xmlns:android和android:versionCode等。第2行的xmlns:android=/apk/res/android指定工程中使用的Android程序包,这一句不能改动。第3行指定应用程序的包名为cn.jxufe.zhangenhe,第4行指定应用程序版本号为1,第5行指定应用程序版本名称为1.0,第6行指定应用程序所使用的SDK版本为10。第8~17行为应用的配置,第8行的android:icon指定应用程序图标为资源文件“@drawable/icon”即图3-14中的icon,这里的@drawable/iocn即指R.drawable.icon,而这个数据对应到res目录中的icon.png文件。因此,icon.png文件就是应用程序的图标。第8行的android:label指应用程序的名称(这个名称并不是出现在应用程序图标下面的字符串,见图3-15),“@string/app_name”表示R.string.app_name,如图3-14所示,它对应strings.xml中名称为app_name的字符串“MyFrameApp”。因此,应用程序的名称为MyFrameApp。图3-14包浏览器的gen目录在指定应用程序名或活动界面标题时,除了可以使用“@string/app_name”从字符串资源文件中查找字符串外,还可以直接指定字符串,例如前述AndroidManifest.xml文件代码的第8~10行可写为如下形式:

8<applicationandroid:icon="@drawable/icon"android:label="@string/app_name">

9<activityandroid:name=".MyFrameAct"

10android:label="框架窗口">

则运行结果如图3-15所示。图3-15中的可见应用程序活动界面标题和程序图标下的程序说明文字(习惯上被称为程序名称)都是“框架窗口”因此,第8行的应用程序名称android:label没有实质性的意义(估计Android在后续的版本中将改进这一问题)。图3-15应用程序执行结果和程序图标3.3.3Android资源文件

第3.3.2节直接使用汉字字符串显示了汉字标题,一般情况下,不采用这种方法。在工程ex03_02中,选择右键弹出菜单“New|Other…”,如图3-16所示,进入图3-17所示界面。图3-16工程右键弹出菜单图3-17新建文件对话框在图3-17中,选择新建文件类型为AndroidXMLFile,然后,点击“Next”按钮进入图3-18所示界面。图3-18新建XML资源文件在图3-18所示界面中,输入文件名为strings_hz.xml,选择文件类型为常量值“Values”,选择语言为“zh”(表示简体中文),选择地区为“CN”(表示中国),自动生成的资源文件目录为“/res/values-zh-rCN”,点击“Finish”按钮完成新建XML文件向导。此时的资源文件目录结构如图3-19所示。图3-19资源文件树状图在图3-19中,新建的资源目录为values-zh-rCN,新建的资源文件名为strings_hz.xml。双击strings_hz.xml文件,进入图3-20所示界面。在图3-20中,点击“Add…”按钮,在“Name”中添加字符串“mainWindowCaption”,在“Value”中添加“框架主窗口”即添加了一个名为mainWindowCaption值为“框架主窗口”的常量字符串资源。

在图3-20中,点击下方的“strings_hz.xml”,显示如下所示代码:

1<?xmlversion="1.0"encoding="utf-8"?>

2<resources>

3<stringname="mainWindowCaption">框架主窗口</string>

4</resources>图3-20字符串资源文件XML图形化设置方式其中,第3行代码表示常量字符串名为mainWindowCaption,在调用时引用“@string/mainWindowCaption”,其字符串值(即字符串内容)为“框架主窗口”。当文件strings_hz.xml内容建好后,则在“gen”目录自动生成该字符串的索引号,如图3-21所示,即引用“@string/mainWindowCaption”相当于引用“R.string.mainWindowCaption”。现在将AndroidManifest.xml中的第9~10行由原来的代码:

9<activityandroid:name=".MyFrameAct"

10android:label="@string/app_name">

修改为:

9<activityandroid:name=".MyFrameAct"

10android:label="@string/mainWindowCaption">图3-21“gen”目录自动生成的字符串索引运行工程ex03_02,其运行结果和程序图标如图3-22所示。图3-22程序运行结果与程序名称通过熟练和巧妙地使用资源文件,可有效地减少工程中的Java代码量,并且增强程序的层次性和可维护性。新建的资源文件均在“gen”目录下生成对应的Java类和常量索引号,如图3-21所示。“gen”目录下只有一个文件R.java,其代码如下所示:

1/*AUTO-GENERATEDFILE.DONOTMODIFY.

2*

3*Thisclasswasautomaticallygeneratedbythe

4*aapttoolfromtheresourcedataitfound.It

5*shouldnotbemodifiedbyhand.

6*/

7

8packagecn.jxufe.zhangenhe;

9

10publicfinalclassR{

11publicstaticfinalclassattr{

12}

13publicstaticfinalclassdrawable{

14publicstaticfinalinticon=0x7f020000;

15}

16publicstaticfinalclasslayout{

17publicstaticfinalintmain=0x7f030000;

18}

19publicstaticfinalclassstring{

20publicstaticfinalintapp_name=0x7f040001;

21publicstaticfinalinthello=0x7f040000;

22publicstaticfinalintmainWindowCaption=0x7f040002;

23}

24}从图3-21可以看出,R类下的所有类和常量均呈目录树的形式罗列出来,方便程序员直观地查找和使用,因此一般不需要查看R.java文件的内容。

自动生的strings.xml资源文件的代码如下所示:

1<?xmlversion="1.0"encoding="utf-8"?>

2<resources>

3<stringname="hello">HelloWorld,MyFrameAct!</string>

4<stringname="app_name">MyFrameApp</string>

5</resources>上述代码中,第2行和第5行配对,表示第3~4行为资源。第3行定义名称为“hello”、值为“HelloWorld,MyFrameAct”的字符串常量。同理,第4行定义名称为“app_name”、值为“MyFrameApp”的字符串常量。

自动生成的布局文件名为main.xml,其内容如下所示:

1<?xmlversion="1.0"encoding="utf-8"?>

2<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

3android:orientation="vertical"

4android:layout_width="fill_parent"

5android:layout_height="fill_parent"

6>

7<TextView

8android:layout_width="fill_parent"

9android:layout_height="wrap_content"

10android:text="@string/hello"

11/>

12</LinearLayout>

在上述代码中的第5行和第6行间插入一行代码:

android:background="@drawable/mycowboy"这里的mycowboy是笔者选择的一幅图片(其版权归相应公司所有),存放位置如图3-23所示。笔者产生了三种分辨率的图片即480 × 800、240 × 400和24 × 40,图片名都为mycowboy.png,分别存放在drawable-hdpi、drawable-mdpi和drawable-ldpi中。新添加的代码用于设置布局的背景即采用图片mycowboy.png作为布局的壁纸。运行结果如图3-24所示。图3-23新添加的图片资源文件图3-24设置布局背景为“西部牛仔”3.3.4Android源程序文件

参考图3-12,可知工程ex03_02中只有一个程序文件即MyFrameAct.java。从图3-12中可以看出,它有一个公有类MyFrameAct,该类位于包cn.jxufe.zhangenhe中,与程序文件同名,其中的方法为onCreate(返回值为void)。文件MyFrameAct.java的代码如下所示:

1packagecn.jxufe.zhangenhe;

2

3importandroid.app.Activity;

4importandroid.os.Bundle;

5

6publicclassMyFrameActextendsActivity{

7/**Calledwhentheactivityisfirstcreated.*/

8@Override

9publicvoidonCreate(BundlesavedInstanceState){

10super.onCreate(savedInstanceState);

11setContentView(R.layout.main);

12}

13}

根据第3.3.3节对布局文件main.xml的了解,知道布局中有一个静态文本框控件,可在onCreate方法中调用该控件的setText方法设置其显示的字符串。下面修改工程ex03_02的文件main.xml、strings_hz.xml和MyFrameAct.java以显示如图3-25所示图形,图3-25中的标题和静态文本框均显示“西部牛仔”。首先在字符串资源文件strings_hz.xml中添加“西部牛仔”常量字符串即添加一行如下所示代码:

<stringname="myWelcomeCowboy">西部牛仔</string>

在main.xml文件中为TextView添加ID号,即在“<TextVew”和“/>”之间添加以下语句:

android:id="@+id/tvMessage"

然后,在工程ex03_02的右键菜单中点击“Refresh”子菜单,或直接按F5快捷键刷新工程,此时自动在“gen”目录下生成新建资源的索引号,如图3-26所示。图3-25设置了标题和显示文字的“西部牛仔”图3-26自动生成资源索引最后,修改MyFrameAct.java文件如下所示:

1packagecn.jxufe.zhangenhe;

2

3importandroid.app.Activity;

4importandroid.graphics.Color;

5importandroid.os.Bundle;

6importandroid.widget.TextView;

7

8publicclassMyFrameActextendsActivity{

9 privateTextViewtextview;

10/**Calledwhentheactivityisfirstcreated.*/

11@Override

12publicvoidonCreate(BundlesavedInstanceState){

13super.onCreate(savedInstanceState);

14setContentView(R.layout.main);

15this.setTitle(R.string.myWelcomeCowboy);

16textview=(TextView)findViewById(R.id.tvMessage);

17textview.setText(R.string.myWelcomeCowboy);

18textview.setTextColor(Color.RED);

19}

20}在第9行中添加类MyFrameAct的私有静态文本框类对象成员textview;在第15行调用setTitle方法设置活动界面的标题为R.string.myWelcomeCowboy即字符串“西部牛仔”。第16行通过findViewById方法由控件的资源ID号获得控件实例(对象);第17行调用setText方法设置textview对象的显示文字为R.string.myWelcomeCowboy即“西部牛仔”;第18行调用setTextColor方法设置字体颜色为红色。

现在运行工程ex03_02,其运行结果将如图3-25所示。 3.4Activity生命周期

Activity生命周期是指活动界面实例(对象)从创建到被Android操作系统关闭的整个生存周期,在这一过程中,Android系统将依次自动调用Activity的六种方法即OnCreate、OnStart、OnResume、OnPause、OnStop和OnDestroy。这六种方法相对于Android系统而言,类似于Activity的六个“钩子”函数(钩子函数是指挂接在某个方法中的空函数,当扩展这个方法的功能时,只需要向其钩子函数中添加特定代码即可,而不用修改这个方法的语句)。Activity的生命周期如图3-27所示,为力求表达准确无误,这里直接引用了Android开发者手册上的英文框图。图3-27Activity生命周期下面通过实例ex03_03说明图3-27中各个方法的调用情况。由于onPause、onStop和onDestroy方法是被动执行方法,特别是onDestroy方法,必须是Activity被关闭时才能调用。可以使用事件处理技术(详见第四章)调用Activity的finish方法关闭活动界面,此时会调用onDestroy方法。由于目前没有介绍Android事件处理技术,因此实例ex03_03没有显示onDestroy方法的调用。

例3.3Activity生命周期中各方法的调用顺序。

新建工程ex03_03,在创建工程ex03_03的向导中输入应用名为MyOnFrameApp、包名为cn.jxufe.zhangenhe,活动界面名为MyOnFrameAct,最小SDK版本号为10。修改MyOnFrameAct.java文件内容如下所示:

1packagecn.jxufe.zhangenhe;

2

3importandroid.app.Activity;

4importandroid.os.Bundle;

5importandroid.util.Log;

6

7publicclassMyOnFrameActextendsActivity{

8 privatestaticfinalStringTAG="MyOnFrameAct";

9/**Calledwhentheactivityisfirstcreated.*/

10@Override

11publicvoidonCreate(BundlesavedInstanceState){

12super.onCreate(savedInstanceState);

13setContentView(R.layout.main);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论