Luoml's blog

Android四大组件之Activity(活动)

Activity

Activity 是一个应用组件,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。

生命周期

Acitvity生命周期

Activity生命周期演示DEMO:android-example\ActivityLifeCycle

  • onCreate()
    活动第一次创建时调用,可以在此方法中完成活动初始化操作,如:加载布局、绑定事件等
  • onStart()
    活动由不可见变为可见时调用
  • onResume()
    此时活动处于运行状态,位于返回栈栈顶
  • onPause()
    启动或恢复另一个活动时调用
  • onStop()
    活动完全不可见时调用
  • onRestart()
    活动由停止状态变为运行状态之前调用,之后活动被重新启动
  • onDestroy()
    活动销毁前调用,之后状态为销毁状态

返回栈

Android使用任务(Task)来管理活动(Activity);
一个Task就是一组Activity的集合;
这些Activity按照它们打开的顺序被放置在一个后进先出的栈中,这个栈也被称作返回栈(Back Stack)。

活动状态

  • 运行状态
    当一个活动位于返回栈的栈顶时,该活动就处于运行状态
  • 暂停状态
    当一个活动不再处于栈顶位置,但仍然可见时,就进入了暂停状态
  • 停止状态
    当一个活动不再处于栈顶位置,并且完全不可见时,就进入了停止状态
  • 销毁状态
    当一个活动从返回栈中移除后,就变成了销毁状态

生存期

  • 完整生存期
    活动在onCreate()和onDestroy()方法之间所经历的,就是完整生存期。
  • 可见生存期
    活动在onStart()和onStop之间所经历的,就是可见生存期。
    在可见生存期内,活动对于用户总是可见(但有可能无法与用户进行交互)。
  • 前台生存期
    活动在onResume()和onPause()之间所经历的,就是前台生存期。
    在前台生存期内,活动总是处于运行状态,此时的活动是可以和用户交互的。

启动模式(lauchMode)

参考^1

Activity启动模式演示DEMO:android-example\ActivityLaunchMode

standard

标准模式,默认,每次都会创建新的Activity覆盖在原有Activity上。
standard

singleTop

栈顶复用模式,首先判断栈顶Activity是否是要启动的Activity,如果是则不创建新的Activity,而直接引用这个Activity;如果不是则创建新的Activity。
singleTop

singleTask

栈内复用模式,检测整个Activity栈中是否存在当前需要启动的Activity,如果存在则将该Activity置于栈顶,并销毁其上所有Activity。
singleTask

singleInstance

单实例模式,创建新的任务栈,且该任务栈仅有一个Activity。
singleInstance

Fork me on GitHub