首页 理论教育 AndroidActivity组件

AndroidActivity组件

时间:2023-11-18 理论教育 版权反馈
【摘要】:Activity组件作为Android4大组件之一,可以表示应用的一个界面,在Android系统中起着十分重要的作用。Activity的4种状态1)Resumed:Activity对象处于运行状态,置于屏幕的最前端。3)Stopped:另一个Activity位于前端,完全遮挡之前的Activity。图7-32 Activity生命周期图2)可见生存期。为了方便说明,这里把当前activity称为Activity1,其他的activity称为Activity2、Activity3,等等。当Activity1完全被Activity2挡住,完全看不见时,Activity1就会onStop。当在Activity1退出时,Activity1就会走到onDestory。1)启动新的Activity实现界面切换。

AndroidActivity组件

Activity组件作为Android4大组件之一,可以表示应用的一个界面,在Android系统中起着十分重要的作用。简单地说,我们在应用中看到的每一个界面,都可以认为是一个Activity。Ac-tivity也可以理解为“活动”,一个Activity从创建到销毁的过程称为Activity的生命周期,即一个“活动”开始,代表Activity组件启动;“活动”结束,代表Activity的生命周期结束。

1.Activity的生命周期

一个Activity的对象的生命周期可类比于人的生命周期,不同阶段需要做对应的事。这就使得一个Activity从创建到销毁的生命周期中,存在4种不同的状态,7个生命周期函数和3个生存期。

(1)Activity的4种状态

1)Resumed:Activity对象处于运行状态,置于屏幕的最前端

2)Paused:另一个Activity位于前端,该Activity被覆盖但是可见。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交互。

3)Stopped:另一个Activity位于前端,完全遮挡之前的Activity。

4)Killed:Activity被系统杀死回收或者没有被启动。

(2)Activity的7个生命周期函数(见表7-2)

7-2 Activity生命周期函数

978-7-111-59182-5-Part01-385.jpg

以上7个方法中除了onRestart之外,其他都是两两相对的,从而又可以将活动分为三种生存期。

1)完整生存期。活动在onCreate方法和onDestroy方法之间所经历的过程,就是完整生存期。一般情况下,一个活动会在onCreate方法中完成初始化操作,而在onDestroy方法中结束活动并销毁,从而释放内存。

978-7-111-59182-5-Part01-386.jpg

图7-32 Activity生命周期图

2)可见生存期。活动在onStart方法和onStop方法之间所经历的过程,就是可见生存期。在可见生存期内,活动对于用户总是可见的,即便有可能无法和用户进行交互。

3)前台生存期。活动在onResume方法和onPause方法之间所经历的过程,就是前台生存期。在前台生存期内,活动总是处于运行状态的,此时的活动是可以和用户进行相互的,我们平时看到和接触最多的也在这个状态下的活动。

为了更好地理解Activity的生命周期,可以认真研读活动生命周期示意图,如图7-32所示。

activity启动时:onCreate→onStart→on-Resume。

为了方便说明,这里把当前activity称为Activity1,其他的activity称为Activity2、Activity3,等等。

从图7-32可以看出,activity从run-ning状态跳转到onPause状态的原因是:有另外一个actvity被启动并运行,比如Activity1通过startActivity启动了Activity2,那么Activity2就处于UI视图的最顶层,而Activity1不再是最顶层的activity,此时就会onPause,此时Activity1已经站在他人之后。

当Activity1完全被Activity2挡住,完全看不见时,Activity1就会onStop。从图7-32中看到,从onPause到onStop的原因是:此时Activity1完全不可见,可以理解为按下home键时,当前activity就会处于onStop的状态。

从图7-32中可以看出activity是可以停留在onPause和onStop这两个状态上,可以相应的恢复。

当在Activity1退出时,Activity1就会走到onDestory。

一旦Activity走到onDestory,若恢复只能onCreate→onStart→onResume。

2.界面的切换(www.xing528.com)

Activity的界面切换是应用中必不可缺的,是实现从一个界面跳转到另一个界面的过程。按照实现的方法不同,大致上可以分为两种:启动新的Activity实现界面切换和改变XML文件实现界面切换。

1)启动新的Activity实现界面切换。对于这种方法分三步:第一步:创建Intent对象;第二步:通过setClass()方法指定当前界面和要跳转到的界面,第一个参数为当前界面,第二个参数是要跳转到的界面;第三步:用当前的Activity调用starActivity()实现界面的切换。

首先了解Intent,Intent可以理解为“意图”,是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。Intent一般可被用于启动活动、启动服务以及发送广播等场景。Intent有多个构造函数的重载,其中一个是Intent(Context packageContext,Class<?>cls)。这个构造函数接收两个参数,第一个参数Context要求提供一个启动活动的上下文,第二个参数Class则是指定想要启动的目标活动,通过这个构造函数就可以构建Intent的“意图”。Activity类中提供了一个startActivity()方法,这个方法是专门用于启动活动的,它接收一个Intent参数,这里将构建Intent传入startActivity()方法就可以启动目标活动。

下面对启动新的Activity实现界面切换举简单的例子进行分析:

先新建一个second_layout.xml布局文件,定义一个按钮,按钮显示Button2。代码如下:

978-7-111-59182-5-Part01-387.jpg

再次,在AndroidManifest.xml中对SecondActivity进行注册,代码如下:

978-7-111-59182-5-Part01-388.jpg

最后,对FirstActivity中按钮的单击事件进行修改。首先需要构建一个Intent,传入FirstAc-tivity.this作为承接,传入SecondActivity.class作为目标活动,这样的“意图”就非常明显,即在FirstActivity活动的基础上打开SecondActivity活动,然后通过startActivity()方法来执行Intent。代码如下:

978-7-111-59182-5-Part01-389.jpg

就这样,已经成功启动SecondActivity活动,实现了界面的切换。如图7-33所示。

978-7-111-59182-5-Part01-390.jpg

图7-33 界面切换图

2)改变XML文件实现界面切换。改变XML文件实现界面切换,可以把它看作重新设置界面的布局文件。这个方法的实质就是在监听事件实现的函数,重新调用setContentView方法,来改变界面的布局——比如,界面上有一个按钮,要实现用户单击这个按钮,就改变一下界面布局,来达到界面切换的效果。

可以分两步骤来实现这种方法:

1)创建一个xml布局文件。

2)通过触发某一个控件(如Button),该控件已经加载监听器,监听器通过setContentView函数切换界面布局。

这样实现整个过程都是在一个Activity上实现,因此所有变量都可

以在Activity状态中获得。

先定义两个按键,通过单击按键1跳转到按键2。

按键1:

978-7-111-59182-5-Part01-391.jpg

978-7-111-59182-5-Part01-392.jpg

这样,就可以通过按下按键1,跳转到按键2的界面,实现了界面的切换。如图7-34所示。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈