Android核心组件之Activity

Android核心组件

Activity

Activity 是 Android 应用程序核心组件中最基本的一种,是用户和应用程序交互的窗口。

在 Android 应用程序中,一个 Activity 通常对应一个单独的视图。一个 Android 应用程序是由一个或多个 Activity 组成的,这些 Activity 相当于 Web 应用程序中的网页,用于显示信息,并且相互之间可以进行跳转。和网页跳转不同的是,Activity 之间的跳转可以有返回值。

新打开一个视图时,之前的那个视图会被置为暂停状态,并且压入历史堆栈中,用户可以通过回退操作返回以前打开过的视图。Activity 是由 Android 系统进行维护的,它有自己的生命周期,即“产生、运行、销毁”,但是在这个过程中会调用许多方法,如创建 onCreate()、激活 onStart()、恢复 onResume()、暂停 onPause()、停止 onStop()、销毁 onDestroy()和重启 onRestart() 等。

每个 Activity 都提供一个用户界面窗口,一般情况下,该界面窗口会填满整个屏幕,但是也可以比屏幕小,或者浮在其他的窗口之上。

Android 应用程序中的多个 Activity 可以直接相互调用以完成不同工作。

当新的 Activity 被启动的时候,之前的 Activity 会停止,但是不会被销毁,而是被压入“后退栈(Back Stack)”的栈顶,新启动的 Activity 获得焦点,显示给用户。

“后退栈”遵循“后入先出”的原则。当新启动的 Activity 被使用完毕,用户单击“Back”按钮时,当前的 Activity 会被销毁,而原先的 Activity 会被从“后退栈”的栈顶弹出并且激活。

当 Activity 状态发生改变时,都会通过状态回调函数通知 Android 系统。而程序编写人员可以通过这些回调函数对 Activity 进行进一步的控制。

Activity生命周期

本质上讲,activity的生命周期有三个状态

  • 运行态

    Activity 运行于屏幕的最上层并且获得了用户焦点。

  • 暂停态

    指当前 Activity 依然存在,但是没有获得用户焦点。

    在其之上有其他的 Activity 处于运行态,但是由于处于运行态的 Activity 没有遮挡住整个屏幕,当前 Activity 有一部分视图可以被用户看见。处于暂停态的 Activity 保留了自己所使用的内存和用户信息,但是在系统极度缺乏资源的情况下,有可能会被杀死以释放资源。

  • 停止态

    指当前 Activity 完全被处于运行态的 Activity 遮挡住,其用户界面完全不能被用户看见。

名称调用时间
onCreate(Bundle savedInstanceState)创建 Activity 时调用。 设置在该方法中,还以 Bundle 的形式提供对以前储存的任何状态的访问。其中参数 savedInstanceState 对象是用于保存 Activity 的对象的状态。
onStart()Activity 变为在屏幕上对用户可见时调用。
onResume()Activity 开始与用户交互时调用(无论是启动还是重启一个活动,该方法总是被调用)。
onPause()当 Android 系统要激活其他 Activity 时,该方法被调用,暂停或收回 CPU 和其他资源时调用。
onStop()Activity 被停止并转为不可见阶段时调用。
onRestart()重新启动已经停止的 Activity 时调用。
onDestroy()Activity 被完全从系统内存中移除时调用。 该方法被调用可能是因为有人直接调用 finish() 方法或者系统决定停止该活动以释放资源。

上面 7 个生命周期方法分别在 4 个阶段按着一定的顺序进行调用,这 4 个阶段如下:

  • 启动 Activity:在这个阶段依次执行 3 个生命周期方法:onCreate、onStart 和 onResume。
  • Activity 失去焦点:如果在 Activity 获得焦点的情况下进入其他的 Activity 或应用程序,这时当前的 Activity 会失去焦点。在这一阶段,会依次执行 onPause 和 onStop 方法。
  • Activity 重获焦点:如果 Activity 重新获得焦点,会依次执行 3 个生命周期方法:onRestart、onStart 和 onResume。
  • 关闭 Activity:当 Activity 被关闭时,系统会依次执行 3 个生命周期方法:onPause、onStop 和 onDestroy。

Activity的创建

  1. 创建新类

    创建一个 Activity,必须创建 Android.app.Activity(或者它的一个已经存在的子类)的一个子类,并重写 onCreate() 方法。

  2. 关联相应的布局文件

    在新建的 Activity 中设置其布局方式,需要在 res/layout 目录中新建一个 XML 布局文件,可以通过 setContentView() 来指定 Activity 的用户界面的布局文件。

  3. 注册

    在 AndroidManifest.xml 文件中对建立的 Activity 进行注册,即在 <application> 标签下添加 <activity> 标签。

Activity的启动

通过意图来启动Activity,一共有以下方法启动另一个activity。

intent的显式调用

1.class跳转

//第一个参数是传入自身的activity,第二个参数是所要跳转的activity
Intent intent = new Intent(this, Main2Activity.class);
startActivity(intent);

2.包名类名跳转

Intent intent=new Intent();
intent.setClassName(this,"csu.org.androiddemo3.Main2Activity");
startActivity(intent);

3.ComponentName

Intent intent=new Intent();
ComponentName componentName = new ComponentName(this,Main2Activity.class);
intent.setComponent(componentName);
startActivity(intent);

intent的隐式调用

需要利用到AndroidMainFest.xml的意图过滤器,如下定义;

<activity android:name=".Main2Activity">
    <intent-filter>
        <!--我们将会利用action的name来进行隐式调用-->
        <action android:name="action.seconde"/>

        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>
Intent intent=new Intent();
intent.setAction("action.seconde");
startActivity(intent);
Intent intent=new Intent("action.seconde");
startActivity(intent);

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页