Activity的启动模式

Activity启动模式定义Activity实例与当前栈之间的联系

设置Activity的启动模式有两种方式:

  1. 清单文件配置
  2. Intent设置flag

Activity总共有五种启动模式:

  • standard(默认启动方式)->flag没有设置值 可以有多个实例,不同实例可以存在多个栈里,不同的栈可以有多个实例

  • singleTop->FLAG_ACTIVITY_SINGLE_TOP 与standard模式类似,但如果在启动的栈顶已经有该Activity的实例,则不创建新的实例,而是调用已有实例的onNewIntent()方法

  • singleTask->FLAG_ACTIVITY_NEW_TASK 是某个栈里唯一的实例,该栈可以存在其他Activity实例,他的所在栈是,启动它的Activity所在栈,如果在该栈再次被启动,则会清空在他之上的Activity,并调用他的onNewIntent()方法 ;如果在其他栈启动,则除了清空他之上的Activity,还会把他之下的Activity带走一起叠在其他栈的上面,注意两个不合并,可以看出他跟栈是绑定的

  • singleInstance->flag无对应 与singleTask很像,但是它所在的栈容不下任何其他Activity实例,也就是说,任何Activity要打开它要么,已经有一个栈里面唯一只有它,那么回调它的onNewintent()方法,如果没有,新建一个栈,它如果要打开其他Activity,则必须在其他栈!

  • xml无对应->FLAG_ACTIVITY_CLEAR_TOP singleTask模式会调用该模式,他的功能是清空当前栈中该实例之上的其他Activity

关联关系(affinity)

表明一个Activity要跟那个Task关联,通常情况下,同一个应用的所有Activity属于同一个栈(除了singleInstance)

你可能感兴趣的:(Activity的启动模式)