Activity之taskAffinity任务相关性场景分析

TaskAffinity属性决定了Activity的任务相关性,影响Activity在任务栈中的归属。结合singleTask使用,会创建新任务栈;与standard模式结合则不创建。allowTaskReparenting属性允许Activity在特定情况下切换任务栈。场景分析:如邮件应用启动浏览器Activity,当浏览器再次打开,若allowTaskReparenting=true,Activity会从邮件任务栈迁移到浏览器。在跨应用交互中,这两个属性有重要应用。
摘要由CSDN通过智能技术生成

TaskAffinity,两个英文单词的组合,直译为任务相关性,可以用来设置Activity任务栈任务相关性的一个属性,这个属性参数指出了Activity所希望进入的任务栈的名称。

taskAffinity的特性结论

  1. 具有同一相关性的 Activity 归属同一任务(从用户的角度来看,则是归属同一“应用”)
  2. 任务的相关性由其根 Activity 的相关性确定。(文中有测试分析)
  3. 我们也可以为Activity单独指定TaskAffinity属性值,来改变一个Activity所需要的任务栈,对一个应用中的Activity进行任务分组。(文中有测试分析)
  4. 如果未设置该属性,则 Activity 会继承为应用设置的任务相关性(请参阅 元素的 taskAffinity 属性)。应用默认相关性的名称为 元素所设置的软件包名称。
  5. TaskAffinity属性一般跟singleTask模式或者跟allowTaskReparenting属性结合使用,在其它情况下,没有意义。(重点分析)
  6. 该属性可以将不同应用中定义的Activity置于同一任务中。
  7. 将该属性设置为空字符串,可使指定 Activity 与任何任务均无亲和关系。有点像singleInstance的模式。单独使用一个任务栈,且其内只有指定 Activity的一个实例。

以上的结论条目有点多,但是重点是第5条,在实际使用场景中,我们也是重点分析第5条的结论。

TaskAffinity与singleTask结合使用

下面我们看一下简单的测试代码

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.hym.launchmode">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".FirstActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hymKing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值