Activity的四种启动模式

Activity的四种启动模式
一、启动模式介绍
  启动模式其实就是Activity启动时的策略,在AndroidManifest.xml中的标签的android:launchMode属性来设置;
  

 <activity android:name=".MainActivity"
                 android:launchMode="singleTop" >

  启动模式有4种,分别为standard、singleTop、singleTask、singleInstance;
任务栈:用于只存放一组应用activity的集合,功能类似于函数调用的栈,先后顺序代表了Activity的出现顺序。
二、四种启动模式
1、standard模式
(1)standard是Activity默认的启动模式,在不指定Activity启动模式的情况下,所有Acitivity使用的都是standard模式。
(2)在standard模式下,每当启动一个新的Activity,它就会进入任务栈,并处于栈顶的位置,对于使用standard模式的Activity,每启动都会创建一个新的实例。
适用于绝大多数的应用场景。
例如:若有一个Activity名为A1, 上面有一个按钮可跳转到A1。那么如果我点击按钮,便会新启动一个Activity A1叠在刚才的A1之上,再点击,还会再新启动一个在它之上,点返回键会依照栈顺序依次退出。
2 、singleTop模式
(1) singleTop启动模式与standard类似,不同的是,当启动的Activity已经位于栈顶,则直接使用它,不再创建新的实例。
(2)解决一个用户体验的问题,避免已经打开的页面被重复打开多次。
这里写图片描述
例如:若我有两个Activity名为A1,A2,两个Activity内容功能完全相同,都有两个按钮可以跳到A1或者A2,唯一不同的是A1为standard,A2为singleTop。
当打开的顺序为A1->A2->A2,则实际打开的顺序为B1->B2(后一次意图打开B2,实际只调用了前一个的onNewIntent方法)
当打开的顺序为A1->A2->A1->A2,则实际打开的顺序与意图的一致,为B1->B2->B1->B2。
3、singleTask模式
当Activity的启动模式为singleTask时,每当启动该Activity时,系统首先使用实例,并将当前Activity之上的所有Activity之上的所有Activity出栈,如果没有发现则创建一个新的实例。
例如:现在栈的情况为:A B C D。D的Launch mode设置成了singleTop,那么在D中启动Intent跳转到D,那么将不会新创建一个D的实例压入栈中,此时栈的情况依然为:A B C D。但是如果此时B的模式也是singleTop,D跳转到B,那么则会新建一个B的实例压入栈中,因为此时B不是位于栈顶,此时栈的情况就变成了:A B C D B。
4、singleIntent模式
singleIntent模式加载Activity时,只会创建一个Activity实例。特点是在整个手机操作系统里只有一个实例存在。
这里写图片描述
例如:打开Activity1,开辟一个任务栈,跳转到Activity2时,会开辟第二个任务栈,放置Activity2,跳转到Activity3时,Activity3回到第一个任务栈中。现在在Activity3的页面,当点击返回键,会到Activity1页面,再点击会到Activity2界面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值