Android开发之Activity四种启动模式的介绍

已经做了很久的Android开发,前些时日朋友在面试的时候被面试官问道Android开发中Activity的几种启动模式,咋一听觉得这也太基础了吧,之前我是做过了解的,但是仔细一回想,原来过了这许久记忆都已经模糊了,工作中基本上都用的默认的standard,即默认模式,下班回来没事,写一篇博客以记之。

Activity有四种启动模式

<activity android:name=".MainActivity" android:launchMode="standard" />

在activity标签中的launchMode中设置

standard

singleTop

singleTask

singleInstance

现在对这四种启动模式分别作介绍

standard,默认模式,遵循后进先出原则,允许多个相同或者不同的activity存在,每starActivity()一次,就会在任务栈Task中增加一个活动实例,不管活动(Activity)是否相同,然后每back一次,就会从栈顶拿出一个,这就是后进先出原则。

例如:A->B->C->A              BACK:A->C->B->A

singleTop,栈顶模式,即在同一个任务栈中不允许存在不同的活动实例,如果启动的activity位于栈顶,就不会重新创建实例,而是会调用onNewIntent()方法,如果启动的activity不位于栈顶,则会创建新的实例位于栈顶。

例如:B是singleTop模式,A->B->B      BACKB->A,只会有一个B实例
      A->B->A->B     BACKB->A->B->A,B没在栈顶,会重新创建实例

singleTask,即如果任务栈中包含该实例,则在启动该实例时调用其onNewIntent()方法,而不会创建新的实例,并且将该实例置于任务栈的栈顶,在它上面的实例则会被全部移除,如果没有该实例,则创建该实例

例如:B为singleTask,A->B->A->B    BACK:B-A
      A->B->B       BACK:B->A

singleInstance ,即启动该Activity,则会将该实例置于一个新的task中,不允许其他实例存在

例如:B为singleInstance ,A->B  BACKB->A
      A->B->A      BACK:A->A->B
      A->B->A->B     BACK:B->A->A

这么讲不知道会是否容易理解点呢?仅供参考,欢迎大家指正。

你可能感兴趣的:(android,Android开发,启动模式)