Activity的启动模式可以在AndroidManifest.xml中,通过android:launchMode或者在Intent的Flag来设置实现。

standard模式

  • 特点:Activity的默认启动模式

    每启动一个Activity就会在栈顶创建一个新的实例

  • 缺点:当Activity已经位于栈顶时,再次启动Activity时还需要创建一个新的实例,不能直接复用。

singleTop(栈顶复用)模式

  • 特点:该模式会判断要启动的Activity实例是否位于栈顶,如果位于栈顶则直接复用,调用其onNewIntent()方法,否则创建新的实例。
  • 缺点:如果Activity并未处于栈顶位置,则还是可能会创建多个实例。

singleTask(栈内复用)模式

  • 特点:Activity只会在任务栈里存在一个实例。如果要激活的Activity在任务栈里已经存在,就不会创建新的Activity,而是直接复用这个已经存在的Activity,调用其onNewIntent()方法,并且清空这个Activity任务栈上的所有Activity。

singleInstance(单一实例)模式

  • 特点:整个手机操作系统中只有它一个实例存在,该模式的Activity会启动一个新的任务栈来管理Activity实例。无论从哪个任务栈中启动该Activity,都会是该Activity所在的任务栈转移到前台,从而使Activity显示。主要的作用是为了在不同程序中共享一个Activity实例。