android开发:android开发艺术探索(一):Activity启动的四种模式、图文理解

默认情况下,当我们多次启动同一个activity时,系统会创建多个activity对象实例并把他们一一压入任务栈中,当我们按返回键,这些实例会依次退出任务栈。考虑到activity复用的问题推出了activity的四种启动模式。在AndroidManifest.xml中设置activity的launchMode属性来配置启动模式,启动模式一共四种。

1.默认启动模式standard:

默认的启动模式,在该模式下,启动的Activity会依照启动顺序被依次压入Task中。即使栈中已经存在该Activity也不管。

2.栈顶复用模式singleTop:

在该模式下,如果栈顶Activity是我们要新建的Activity(目标Activity),那么就不会重复创建新的Activity实例。系统会回调activity的onNewIntent()方法,该方法会传入intent对象,我们可以在这个方法中取出intent的数据,需要注意的是这个activity的oncreate、onstart将不会执行,因为这个activity是直接从栈顶拿来复用的,原本就已经存在。

3.栈内复用模式singleTask:

在singleTask模式下,如果task栈内存在目标Activity实例,则不用创建新的实例,它会将栈内的对应Activity实例之上的所有Activity弹出栈,然后把该Activity置于栈顶的位置。系统会回调activity的onNewIntent()方法,该方法会传入intent对象,我们可以在这个方法中取出intent的数据,需要注意的是这个activity的oncreate、onstart将不会执行,因为这个activity是直接从栈顶拿来复用的,原本就已经存在。

4.全局唯一模式singleInstance:

在该模式下,假如Activity3是singleInstance,其他都是默认的,当启动Activity3的时候系统会判断该实例是否存在,存在则不创建,不存在则创建一个新的任务栈存放Activity3实例,并且焦点移动到该栈(图中红色的栈)。当我们再启动Activity4的时候会把Activity4压入原有的栈,焦点移动到原有的栈(图中蓝色的栈)。这时候回退的时候会先把拥有焦点的栈所有Activity依次退出后才会执行下一个栈。所以回退顺序是Activity4——Activity2——Activity1——Activity3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值