详解Activity4种启动模式

三,Activity的启动模式

Intent的标志位FLAG:

 1,Intent.FLAG_ACTIVITY_SINGLE_TOP     与加载模式singleTop功能相同    

 2, Intent.FLAG_ACTIVITY_CLEAR_TOP    

      如果已经启动了四个Activity:A,B,C和D。在D Activity里,我们要跳到B Activity,同时希望C finish掉,可以在startActivity(intent)里的intent里添加flags标记,如下所示: 销毁目标Activity和它之上的所有Activity,重新创建目标Activity

 3,Intent.FLAG_ACTIVITY_NEW_TASK  

      具有这个标志的Activity启动时,在同一个任务栈中所以位于它上面的Activity都要出栈,一般会和singleTask模式一起出现

 

关于标记,可参考下面文章:

        Android 关闭多个视图Intent.FLAG_ACTIVITY_CLEAR_TOP用法

Activity采用的是栈的数据结构来管理活动(activity的中文名字)的.

(一),standard,标准模式.

1,每启动一个activity,就会创建一个新的对象.

2,比如ActivityA跳转到ActivityA,再跳转到ActivityA,接连两次,这个时候要按3次Back键,才能退出程序.

  

 

(二),SingleTop,单一栈顶模式.

 

1,每启动一个activity,就会创建一个新的对象.但若是这个Activity处于栈顶,就不会再创建新的对象,而是复用该对象.

2,比如:ActivityA跳转到ActivityA,在跳转到到ActivityA,按1次Back键就推出程序了.因为此时栈里面就只有一个对象ActivityA,

 

3,再比如:ctivityA跳转到ActivityB,在跳转到到ActivityA.这个时候要按3次Back键,才能退出程序.

这是因为在启动ActivityB的时候,栈顶活动就变成了ActivityB,再次启动ActivityA,就会创建新的ActivityA对象,那这个栈中就有3个对象,2个ActivityA,1个ActivityB.

 4,使用场景:通知,浏览器的书签

 

(三),SingleTask,单一任务模式.

 

1,每启动一个activity,就会创建一个新的对象.但若是这个栈中有了该对象,就不会再创建新的对象,而是复用该对象.并把该活动之上的所有活动清除出栈.

2,比如:ctivityA跳转到ActivityB,在跳转到到ActivityA.这个时候要按1次Back键,就能退出程序.

这是因为ctivityA跳转到ActivityB时,这个时候ctivityA跳转到ActivityB位于栈顶;再次启动ActivityA时候,栈中已经有ActivityA,那就会复用ActivityA,并将ActivityB清理出栈.这个时候栈中就剩下1个ActivityA.

3,使用场景:浏览器的主界面

 

代码中设置SingleTask模式:

 

(四)SingleInstance,单一实例模式.

1,每启动一个Activity,就会新建一个栈来管理这个Activity.

<activity android:name=".ActivityB"
    android:launchMode="singleInstance"
/>

2,比如:

将ActtivityB放在一个独立的栈中

ActivityA跳转到ActivityB,在跳转到到ActivityC.

首先按返回键,就会返回ActivityA界面,

再按返回键,才会返回ActivityB,

最后,按返回键,就会退出程序.

这是因为ActivityB单独处于一个栈中,ActivityA和ActivityC处于一个栈中.

3, 使用场景:来电界面

五,taskAffinity,任务相关性

1,这个参数标识了一个Activity所在的栈的名字,

2,默认情况下,所有Activity所在的栈的名字为应用的包名.

3,每个Activity都可以单独指定taskAffinity属性,这个指定的属性值,不能和包名一直,否则就相当于没指定.

4,taskAffinity主要和singleTask启动模式或者allowTaskResparenting配对使用,在其他情况下没意义.

 

<activity
    android:taskAffinity="com.ryg.task1"
    android:name=".ActivityA"
    android:launchMode="singleTask"
/>

 

相关文章:

彻底明白Activity启动模式-SingleTop、SingleTask、SingleInstance具体使用场景

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ISO 15031协议是一项用于汽车诊断系统的工业标准,定义了9不同的工作模式。每模式都有不同的功能和应用,下面将对这9模式进行详细解释。 1. 模式1:这是一数据请求模式,用于读取已存储的故障码和数据流信息。它提供了诊断工程师获取车辆的基本故障诊断信息的能力。 2. 模式2:这模式允许诊断工程师通过所选的参数和命令控制车辆的操作。它可以用于执行特殊的测试和校准程序。 3. 模式3:这是一读取存储在车辆控制模块内部的故障码的模式。它可以用于访问诊断储存器或存储在其他数据储存器中的故障码。 4. 模式4:这模式用于删除存储在车辆控制模块中的已修复故障码。它可以在修复后将故障码从存储器中删除。 5. 模式5:这是一用于执行 Lambda 空燃比控制测试的模式。它提供了对发动机燃料混合比进行实时控制和调整的能力。 6. 模式6:这模式为诊断工程师提供了对车辆排放系统进行的监控和故障检测的能力。通过该模式,工程师可以确定哪个排放系统部件需要检修或更换。 7. 模式7:这是一氧气传感器监控测试模式。它可以检测和诊断氧气传感器的故障或不正常行为。 8. 模式8:这模式允许技术人员对非标准OBD系统进行自定义诊断。它提供了诊断功能的扩展和定制的能力。 9. 模式9:这是一用于对车辆进行故障诊断和维修操作的控制模式。它允许诊断工程师对车辆的控制单元进行重新编程或重新配置。 总而言之,ISO 15031协议的这9模式提供了广泛的汽车诊断能力,使诊断工程师能够读取故障码、执行特殊测试、监控车辆系统和控制单元,并进行排放控制和燃料混合比调整等操作。这些模式的功能涵盖了现代汽车诊断和维修工作中的大部分需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值