android之activity四大启动模式

activity的四种启动模式:standard、singleTop、singleTask、singleInstance

android的每个界面都是一个activity,来回之间的切换就是activity的启动与切换。

设置Activity的启动模式,只需要在AndroidManifest.xml里对应的<activity>标签设置android:launchMode属性即可。

下面分别介绍四种启动模式:

1、standard(默认):

默认启动模式,每次启动Activity时都会创建一个新的Activity,并放入任务栈中。在一个任务栈中可以有相同的实例,也允许多个相同的activity叠加。
例:A启动---B启动----A启动,那么栈中的顺序为:ABA;如果按back键,它会按照栈中的顺序依次退回。

2、singleTop:
任务栈中可以存在多个实例activity,但是不允许相同的两个activity相邻叠加。如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,即:
当Activity在栈顶的时候,启动相同的Activity,不会创建新的实例,而会调用其onNewIntent方法。否则就会创建新的实例并放入栈顶。
(即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例)。

例:任务栈中现有ABC三个activity,当打开C实例时,不是创建新的实例,而是调用C实例的onNewIntent()方法。

3、singleTask:
当打开一个实例时,如果在栈中已经有该Activity的实例,就会调用实例的onNewIntent()方法重用该实例。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。
如果栈中不存在该实例,将会创建新的实例放入栈中。 

例:栈中现有ABC三个实例,打开A实例时,调用A实例的onNewIntent()方法同时移出A实例上面的B、C实例,现在栈中只有A实例。

4、singleInstance:
只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Activity存在。
如果应用1的任务栈中创建了MainActivity实例,如果应用2也要激活MainActivity,则不需要创建,两应用共享该Activity实例;

例:应用1中有A、B实例,应用2中有C实例,当应用1要创建实例C时,不需要创建新的实例,直接共享应用2中的C实例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值