Activity启动模式

转载请注明出处:TuTu

Activity的启动模式一共分为四种,分别是standard、singleTop、 singleTask 和 singleInstance,通过在AndroidManifest.xml 中指定android:launchMode属性来选择启动模式。

<activity
    android:name=".SingleInstanceActivity"
    android:label="singleInstance launchMode"
    android:launchMode="standard">

standard 默认模式
在这个模式下,默认都会创建一个新的实例。每当启动一个新的活动都会创建一个新的实例,并进入返回栈中处于栈顶的位置。所以就会生成多个相同的实例,并叠加在一起。假如先后启动了A-B-C三个活动,那么按下返回键之后会先干掉C,B就会成为栈顶的首位,以此类推。

singleTop 栈顶复用模式
如果要开启的活动在任务栈的顶部已经存在,就不会创建新的实例,就会调用 onNewIntent() 方法。假如A活动已经启动,突然来了一个通知(也是A活动)打开通知之后就不会再创建实例了。

singleTask 栈内复用模式
在整个应用程序的上下文中只存在一个实例。每次启动该活动时系统首先 会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。

singleInstance 单一实例模式
活动会启用一个新的返回栈来管理这个活动,并且任务栈里面只有他一个实例存在。这种模式很少被使用。实际使用的案例如Launcher的Activity或者100%确定只有一个Activity的应用。总之除非完全有必要,不然不建议使用这种模式。

除了在AndroidManifest.xml中直接设置launchMode,我们还可以通过Intent Flags来设置。

Intent intent = new Intent(MainActivity.this,ModeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值