Android学习笔记:Activity生命周期与启动模式

Activity生命周期

Android通过任务来管理活动的,一个任务就是一组存放在栈里的活动的集合,当按下back键或是调用了finish()方法后,栈顶的活动就会出栈,当启动一个活动后将该活动添加到栈顶。

活动具有4中状态:

  • 运行状态:处于栈顶的活动
  • 暂停状态:活动不在栈顶但 仍然可见(可能只占用屏幕的部分区域)
  • 停止状态:不再处于栈顶且 完全不可见
  • 销毁状态:活动从返回栈中移除

Activity中的7个回调方法

  • onCreate(): 活动第一次被创建时调用,活动的初始化操作应该在这个方法内完成
  • onStart(): 活动由不可见变为可见是调用
  • onResume(): 活动准备好与用户交互时调用,此时活动一定位于返回栈栈顶
  • onPause(): 低筒准备去启动或是恢复另一个活动时调用,进行资源释放及关键数据保留
  • onStop(): 活动完全不可见是调用
  • onDestroy(): 活动被销毁之前调用
  • onRestart(): 活动由停止状态变为运行状态之前调用

Activity生命周期示意图:

Android学习笔记:Activity生命周期与启动模式

活动被回收前保存数据等方法

在活动被系统回收之前,如果有通过onSaveInstanceState()方法保存数据到对应的Bundle对象中,则可以在活动再次被启动后在该Bundle对象中获取保存的数据。

活动的启动模式

活动的启动模式通过AndroidManifest文件中的activity标签中的launchmode标签指定(存在于android下,android:launchmode)

  • Standard, 默认模式, 新活动会被加入到返回栈中,无论该活动是否已在返回栈中存在, 返回栈中可能含有一个活动的多个实例
  • singleTop, 与Standard模式不同的是,singleTop只有在 当前栈顶不是即将创建的活动 的实例时才会创建该活动一个新的实例
  • singleTask, 一个返回栈中只能有同一个活动的一个实例,若在新活动被创建前,该活动已经在返回栈中有了一个实例,则栈顶直接变为该实例,并将该实例原位置之上的所有实例移出返回栈
  • singleInstance, 该启动模式下的活动只能 单独存在 于一个返回栈中 (PS.按下back键是只能改变到当前返回栈中的上一个活动,即栈顶下的一个活动)