【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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值