【Android开发】Activity 4种加载方式

配置Activity时可以指定android: launchMode属性,用于配置Activity的启动方式。
该属性支持4个属性值:

  • standard:标准模式,默认的加载模式
  • singleTop:Task单例栈顶模式
  • singleTask:Task内单例模式
  • singleInstance:全局单例模式

standard

每次通过standard模式启动目标Activity时,Android总会为目标Activity创建一个新的实例,并将Activity添加到当前Task栈中。
这种模式不会启动新的Task,新的Activity将被添加到原有的Task中。

singleTop

singleTop模式与standard模式基本相同,但是有一点不同:当将要启动的目标Activity已经位于栈顶时,系统不会重新创建目标Activity实例,而是直接复用已有的Activity实例。
如果将要启动的目标Activity没有位于Task栈顶,此时系统会重新创建目标Acitvity的实例,并将它添加到栈顶。

singleTask

保证同一个Task中只有一个实例,有三种情况:

  • 如果将要启动的目标Activity不存在,系统将会创建目标Activity的实例,并将它加入Task栈顶。
  • 如果将要启动的目标Activity已经位于Task栈顶,此时与SingleTop相同。
  • 如果将要启动的Activity已经存在,但是没有位于栈顶,系统将会把位于该Acitvity上面的所有Activity上面的所有Activity移除Task栈,从而使得目标Activity转入栈顶。

singleInstance

保证无论从哪个Task中启动目标Activity,只会创建一个目标Activity实例,并会使用一个全新的Task栈来加载该Activity的实例。

  • 如果将要启动的目标Activity不存在,系统会先创建一个全新的Task,再创建目标Activity的实例,并把它加入新的Task栈顶。
  • 如果将要启动的目标Activity已经存在,不管它位于哪个应用程序中、位于哪个Task中,系统都会把该Activiy所在的Task转到前台,使该Activity显示出来。

采用singleInstance模式加载Activity总是位于Task栈顶,且加载的Activity所在的Task只包含该Activity。

猜你喜欢

转载自blog.csdn.net/weixin_42020386/article/details/112799490