欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2022-06-17 17:50:52
配置Activity时可以指定android: launchMode属性,用于配置Activity的启动方式。该属性支持4个属性值:standard:标准模式,默认的加载模式singleTop:Task单例栈顶模式singleTask:Task内单例模式singleInstance:全局单例模式standard每次通过standard模式启动目标Activity时,Android总会为目标Activity创建一个新的实例,并将Activity添加到当前Task栈中。这种模式不会启动新的T...

配置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。

本文地址:https://blog.csdn.net/weixin_42020386/article/details/112799490