Android基础:Activity的启动模式

1、Activity启动提供了4种方式

Standard:标准模式

SingleTop:栈顶复用模式

SingleTask:栈内复用模式

SingleInstance:单例模式


2、关于Activity的管理方式:任务栈。任务栈采用的结构是:先进后出


3、关于启动模式的总结

(1)Standard

特点:

1)Activity的默认启动模式

2)每启动一次Activity,就会创建一个新的Activity示例 并且 置于栈顶

3)Activity A 以标准模式 启动Activity B,那么Activity B 就会进入到 A 的栈中 并且 处于栈顶

4)注意:因为ApplicationContext没有任务栈,故无法用标准模式启动任务栈。但是可以通过待请启动的Activity指定标记:FLAG_ACTIVITY_NEW_TASK,这时启动以后就创建一个新的任务栈。


(2)SingleTop

特点:

1)、若新建的Activity位于任务栈的栈顶,那么此Activity的实例就不会重建,而是重新应用栈顶的实例

2)调用实例的时候是不会调用onCreate()和onStart(),而是会调用onNewIntent()


(3)SingleTask

特点:

1)查看Activity想要的任务栈是否存在,若不存在则重建1个任务栈、创建该Activity实例 并且 置于栈中

2)若存在,则查看该Activity是否存在栈中,若存在,则将该Activity栈上方的所有Activity出栈。回调onNewIntent()

3)应用场景:首页


(4)SingleInstance

特点:

1)、直接创建1个新的任务栈 并且 将该Activity 放入新栈中

2)应用场景:比如多个界面都访问同一个Activity,那么这个Activity就可以设置成SingleInstance


4、启动模式的设置

方式1:在AndroidMainifest

<activityandroid:launchMode= "启动模式" //属性 //standard:标准模式 //singleTop:栈顶复用模式 //singleTask:栈内复用模式 //singleInstance:单例模式 //如不设置,Activity的启动模式默认为**标准模式(standard)**</activity>


<activityandroid:launchMode= "启动模式" //属性 //standard:标准模式 //singleTop:栈顶复用模式 //singleTask:栈内复用模式 //singleInstance:单例模式 //如不设置,Activity的启动模式默认为**标准模式(standard)**</activity>


<activityandroid:launchMode= "启动模式" //属性 //standard:标准模式 //singleTop:栈顶复用模式 //singleTask:栈内复用模式 //singleInstance:单例模式 //如不设置,Activity的启动模式默认为**标准模式(standard)**</activity>



<activity android:launchMode="启动模式"
	//启动模式 
	//standard:标准模式 
	//singleTop:栈顶复用模式 
	//singleTask:栈内复用模式 
	//singleInstance:单例模式 
</activity>

方式2:在代码中设置
Intent inten = new Intent (Activity_A.this,Activity_B.class);
intent,addFlags(Intent,FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

Flag说明:

FLAG_ACTIVITY_SINGLE_TOP:SingleTop栈顶复用模式

FLAG_ACTIVITY_NEW_TASK:SingleTask栈内复用模式

FLAG_ACTIVITY_CLEAR_TOP:SingleTask默认有此标记效果,意义:清除位于其上层的所有Activity

FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS:标记此Activity不会出现在历史Activity的列表中,无法通过历史列表找到该Activity

从上面我们可以发现Intent 没有 设置 SingleInstance,所以两种方式还是有区别的:

区别:AndroidMainifest无法设定 FLAG_ACTIVITY_CLEAR_TOP,Intent无法设置SingleInstance






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值