首页 > 代码库 > Android Activity 启动模式

Android Activity 启动模式

启动模式类别

  • standard:每次启动activity都会创建新的实例对象。activity可以在多个不同的任务中被实例化多个对象。
  • singleTop:如果当前任务栈顶有activity的实例对象,则调用onNewIntent()获取当前实例对象,否则在当前任务栈中实例化新对象。
  • singleTask:任务栈的只有一个activity实例对象,如果已存在activity实例对象则调用onNewIntent()获取当前实例对象。
  • singleInstance:由系统创建新的任务栈并维护唯一的activity实例对象

定义启动模式

  1. 配置manifest文件:定义标签的launchMode属性值(standard,singleTop,singleTask,singleInstance),默认值是standard

  2. 设置Intent的flag变量:设置Intent的flag字段值(FLAG_ACTIVITY_NEW_TASK,FLAG_ACTIVITY_SINGLE_TOP,FLAG_ACTIVITY_CLEAR_TOP)

    • FLAG_ACTIVITY_NEW_TASK:standard启动模式
    • FLAG_ACTIVITY_SINGLE_TOP:singleTop启动模式
    • FLAG_ACTIVITY_CLEAR_TOP:如果当前任务栈中已有activity实例对象,则清空上面的其他activity并调用onNewIntent()激活此实例对象

清空任务栈

默认情况下,当某一任务长时间不使用时,Android系统会情况当前任务中除了跟activity之外的所有activity。

  • alwaysRetainTaskState:当任务栈的跟activity的属性值设置true后,即使长时间离开某一任务,系统依然保留所有activity
  • clearTaskOnLaunch:当任务栈的跟activity的属性值设置true后,用户离开此任务后,就会清空此任务栈中的所有activity
  • finishOnTaskLaunch:正对当前activity有效,当用户离开此任务后,此activity不在恢复离开前的状态

Android Activity 启动模式