Android四种启动模式详解Standard,SingeTop,SingleTask,SingleInstance

Android四种启动模式详解


图解

图解四种启动模式
安卓中Activity(活动)的四种启动模式,对应实际项目中不同场景的使用至关重要。因此如何使用这四种启动模式,对于Android开发者来说是十分重要的。安卓中使用任务栈stack来管理Activity的实例,栈的特点是“先进后出,后进先出”。
- 举个抽象的例子:洗碗的时候,碗会一个一个的叠着。所以第一个洗干净的碗往往是最后用来盛饭的,因为它被压在最下面。在这里我们把Activity当成一个一个的碗就行了。

使用方法

  1. 第一种方式,静态设置:也是最常用的方式,在AndroidManifest.xml文件下的设置。
<activity android:name=".B_Activity"
          android:launchMode="singleTask">
</activity>

这里写图片描述
2. 第二种方式,动态设置:利用IntentFlags属性设置

Intent intent = new Intent();
intent.setClass(this, B_Activity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(intent);

注意点

  1. 两种方式同时存在的时候,动态设置的优先级高于静态设置。
  2. 第一种方式无法为Activity指定 FLAG_ACTIVITY_CLEAR_TOP 标识。
  3. 第二种方式无法为Activity指定 singleInstance 模式。
1. Standard 普通模式

这里写图片描述
1. 每次启动Activity的时候,都会创建一个实例,并放置在栈顶,是Activity默认的启动的模式。
2. 使用场景:适用于普通activity启动。

2. SingleTop 栈顶复用模式

这里写图片描述
3. 当启动一个Activity的时候,会判断栈顶是不是有这个实例,如果有则直接复用此实例,没有则会重新创建一个新的实例,并放置在栈顶。
4. 使用场景:启动同类型activity(活动)的时候使用,例如通知页面,接收重复的通知会不停创建活动,使用这种方式就能避免重复创建。

3. SingleTask 栈内复用模式

这里写图片描述
5. 当启动一个Activity的时候,会判断栈内是否有这个实例,如果有则直接复用此实例,并移除此实例上的所有实例,让此实例成为栈顶。没有则会重新创建一个新实例,并放置在栈顶。
6. 使用场景:适用于首页,主页,等只有一个activity实例的页面。

4. SingleInstance 单一实例模式

这里写图片描述
7. 这是最特殊的一种启动模式,当启动一个Activity的时候,会直接重新创建一个新的栈,并把该实例放置在新的栈中。
8. 使用场景:用于闹钟,电话等,单独的页面,一般不使用此模式。

注意点

  1. 使用SingleTask和SingleTop的时候如果并没有创建新的实例,那么重新调用旧的activity的时候,并不会调用oncreat()方法,所以传递的数据的在接收的时候一定要在onNewIntent()方法里面做操作。
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        //这里做操作
    }

结语

下一篇,Android命名规范,开发规范,注意点整理(一):
https://blog.csdn.net/weixin_40234977/article/details/79921768

博主原创不易,货干又没有掺杂水分,如果你觉得还行,请打赏一二:
这里写图片描述

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值