You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FLAG_ACTIVITY_SINGLE_TOP未覆盖singleTask的实验异常技术问询

Android启动模式Intent标记与清单配置的优先级验证问题

我查阅了Android官方启动模式文档,其中提到:

若Activity A启动Activity B,Activity B可在清单文件中定义其与当前任务的关联方式,Activity A也可通过Intent请求该关联方式。若两者均定义,则优先遵循Activity A的Intent请求。

为验证该规则,我开展了如下实验:
创建两个Activity:MainActivity(启动页)和Activity2,清单配置如下:

<activity
    android:name=".Activity2"
    android:exported="false"
    android:launchMode="singleTask"
    android:taskAffinity="com.affin_1"/>
<activity
    android:name=".MainActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

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

注意Activity2显式配置了不同于默认值的taskAffinity,且启动模式为singleTask。

在MainActivity的onCreate()中启动Activity2,其按预期在新任务中启动,此时存在两个独立任务:

  • 任务1:包含MainActivity
  • 任务2:包含Activity2

随后在MainActivity中添加按钮,点击时通过如下代码启动Activity2:

button.setOnClickListener {
    startActivity(Intent(this, Activity2::class.java)
        .setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP))
}

我为Intent设置了Intent.FLAG_ACTIVITY_SINGLE_TOP启动标记,预期该标记会覆盖清单中声明的singleTask启动模式,在MainActivity所在任务中创建新的Activity2实例,最终形成两个任务:

  • 任务1:MainActivity -> Activity2
  • 任务2:Activity2

但实际结果不符,系统将Intent路由至任务2中已存在的Activity2实例,未按预期覆盖singleTask启动模式。

内容的提问来源于stack exchange,提问作者Manish Kumar Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 00:46:09