• Android Activity组件及其生命周期

    Activity 是 Android 组件中最基本也是最为常见的组件。

    Activity 是用户接口程序,原则上它会提供给用户一个交互式的接口功能,几乎所有的 Activity 都要和用户打交道,也有人把它比喻成 Android 的管理员。需要在屏幕上显示什么、用户在屏幕上做什么、处理用户的不同操作等都由 Activity 来管理和调度。

    Activity 提供用户与 Android 系统交互的接口,用户通过 Activity 来完成自己的目的。例如打电话、拍照、发送 E-mail、查看地图等。

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

    一个 Android 应用程序通常由多个 Activity 组成,但是其中只有一个为主 Activity。其作用相当于 Java 应用程序中的 main 函数,当应用程序启动时,作为应用程序的入口首先呈现给用户。

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

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

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

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

    Activity 的生命周期

    从本质上讲,Activity 在生命周期中共存在三个状态,这三个状态如下:

    1) 运行态

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

    2) 暂停态

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

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

    3) 停止态

    指当前 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 的整个生命周期。

    Activity生命周期
    图 1  Activity 生命周期
     

更多...

加载中...