android Activity中standard singleTop singleTask singleInstance四种加载模式的区别

网上这四种加载模式说的比较含糊,而且繁杂,故本人通过试验加自己的理解力图用最简单明了的语言表述,整理如下:

这四种模式的主要作用是:当重复StartActivity的时候根据需要产生多个Activity或者只产生一个Activity。

在Activity的xml中android:launchMode="singleTask设置位置如下:

<activity android:name="ACtivityA"android:launchMode="singleTask"></activity>


模式一:standard 

     该模式是默认模式,最好理解,ActivityA多次StartActivity去启动ActivityB的时候总会产生ActivityB的新实例,即总会调用OnCreate方法。

模式二:singleTop 

    该模式指的是如果设置该属性,当Activity在栈顶(如ActivityA),ActivityB通过StartActivity启动ActivityA,

ActivityA不会产生新实例,否则产生新实例。(如B设置该苏醒,A启动B后,B在栈顶,此时B启动B,不会产生新实例。如果此时B启动C,C在启动B,就会产生新实例(B已不在栈顶了))。

(个人理解栈就是放置Activity的容器,如A启动B,B启动C。则A在栈底,c在栈顶。这是指同一个栈)。

模式三:singleTask

设置该属性的Activity只能产生一个实例。如A设置该属性,A启动B(B为默认模式),B在启动A,则这个A还是原来的A,只从restart开始执行。

但B启动A后,B会销毁!因为B在栈顶,A在B下面,B启动A,而A又不会产生新实例,相当于按返回键一样,所以销毁。


模式四:singleInstance

设置该属性的Activity也只能产生一个实例,但会放在不同栈中。如B设置该属性,A启动B(B已与A不再同一栈中),B在启动C(因A,C为默认模式,所以C与A在同一栈中),而C按返回键,并不显示B界面,而是A界面。当A所在的栈完全销毁的时候才会显示B界面。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值