Android 通过taskAffinity属性实现在任务栏中出现多个Activity

在很久以前,曾经遇到过一个问题,就是在按任务键的时候,启动的多个Activity居然同时出现在任务管理器中,当时非常的困惑,还以为是启动模式设置错了,就把launchMode改为为singleTask,后来发现,根本就不是启动模式的问题。
而是我使用的第三方应用不知道在什么地方设置了taskAffinity这个属性。
每个Activity都可以设置这个属性,设置为不同的taskAffinity,那么这个Activity就变成了不同的task,就会出现前面提到的问题。当然,我们也可以故意这样设置,来实现在任务管理器中出现多个Activity。

        <activity android:name=".SecondActivity"
            android:taskAffinity="com.task1"
             android:launchMode="singleInstance">
        </activity>
        <activity android:name=".MainActivity"
            android:taskAffinity="com.task2"
             android:launchMode="singleInstance"
             >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

使用了这个属性后,需要在Intent里面设置FLAG_ACTIVITY_NEW_TASK标志,不然报错。

public void second(View view) {
        Intent intent=new Intent(MainActivity.this,SecondActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        getApplicationContext().startActivity(intent);
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值