Android笔记----深入理解Activity

来源:互联网 发布:redis查询数据库数量 编辑:程序博客网 时间:2024/06/05 08:53

建立、配置和使用Activity

Activity的回调机制

Activity的生命周期

 

 

 

建立、配置和使用Activity

       ActivityAndroid应用中最重要、最常见的应用组件。实际应用中,包含多个Activity,实现不同的Activity向用户呈现不同的操作界面。Android应用的多个Activity组成Activity栈,当前活动的Activity位于栈顶。

Activity的作用

       用户与应用程序交互的接口;

       作为放置控件的容器。

 

1.1建立一个Activity的步骤如下:

       建立Activity需要继承Activity基类,根据不同的需要,有时也需要继承Activity的子类。

       需要复写onCreate()方法(由应用程序的框架调用)

       每一个Activity必须在AndroidManifest.XML文件中进行配置

       为Activity添加必要的控件。

 

1.2 启动、关闭Activity

一个Android应用通常都会包括多个Activity,但只有一个Activity会作为程序的入口,该Activity会在Android应用运行时,自动启动并执行。至于应用中的其他的Activity,通常由入口Activity启动。

 

Activity启动其他Activity有如下两种方法。

       startActivity(Intent  intent);启动其他的Activity

       startActivityForResult(Intent intent,int requestCode ):以指定请求码(requestCode)启动Activity,而且程序将会等到新启动Activity的结果(通过重写onActivityResult()方法来获取)

Android为关闭Activity准备了如下两个方法。

       finish():结束当前Activity

       finishActivity(int requestCode):结束以startActivityForResult(Intent intent,int requestCode )方法启动的Activity

 

1.3 使用BundleActivity之间交换数据

当一个Activity启动另一个Activity时,常常会有一些数据要传递过去,在Android中,需要传递的数据放在对象Intent中。

Intent提供了多个重载的方法来携带额外的数据。

       putExtras(Bundle data):向Intent中放入需要携带的数据。

方法中的Bundle是数据携带包,提供了多个方法存入数据

       putXxx(String key,Xxx data):向Bundle中放入各种类型数据。

       putSerializable(String key,Serializable data):Bundle中放入一个可序列化的对象。

为了取出Bundle数据携带包里的数据,Bundle提供如下方法。

       getXxx(String key):Bundle取出IntLong等各数据类型数据。

       getSerializable(String key,Serializable data):Bundle取出一个可序列化的对象。

 

1.4 启动其他Activity并返回结果

       Activity提供了一个startActivityForResult(Intent intent,int requestCode )方法来启动其他Activity。该方法用于启动指定的Activity,而且期望获取指定Activity返回的结果。

为了获取被启动的Activity所返回的结果,当前Activity需要重写onActivityResult(int requestCode,int resultCode,Intent intent)

       一个Activity中可能包含多个按钮,并调用startActivityForResult()方法来打开多个不同的Activity处理不同的业务。当这些新Activity关闭时,系统都会调用前面ActivityonActivityResult(int requestCode,int resultCode,Intent intent)方法,利用request Code区分是哪个请求结果触发的,利用resultCode区分返回的数据来自哪个新的Activity

 

 

Activity的回调机制

       Activity被开发出来,开发者只要在AndroidManifest.xml文件配置该Activity即可,至于该Activity何时被实例化,方法何时被调用,对开者来说是完全透明的。

 

       上篇介绍了事件的回调机制, Activity的回调机制也类似,当Activity被部署在Android应用中之后,随着应用的运行, Activity会不断地在不同的状态之间切换,该Activity中特定的方法就会被回调

 

 

Activity的生命周期

       当Activity处于Android应用中运行时,它的活动状态由AndroidActivity栈的形式管理。当前活动的Activity位于栈顶随着不同应用的运行,每个Activity都有可能从活动状态转入到非活动状态,也可以从非活动状态转入到活动状态。

Activity大致会经过如下四个状态。

       活动状态:当前Activity位于前台,用户可见,可以获得焦点

       暂停状态:其他Activity位于前台,该Activity依然可见,只是不能获得焦点。

       停止状态:该Activity不可见,失去焦点。

       销毁状态:该Activity结束,或Activity所在Dalvik进程结束。

 

Activity生命周期及相关回调方法如下图所示。

Activity的生命周期中,如下方法会被系统回调。

        onCreate(Bundle savedStasus):创建Activity时被回调。

       onStart():启动Activity时被回调。

       onRestart():重新启动Activity时被回调。

       onResume ():恢复Activity时被回调。

       onPause():暂停Activity时被回调。

       onStop():停止Activity时被回调。

       onDestroy():销毁Activity时被回调。

 

 

 

 

 

 

 

 

 

0 0
原创粉丝点击