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

Android singleInstance模式下跨应用Intent传值多次调用为空问题咨询

问题根因

你为TestActivity1、TestActivity2配置了singleInstance启动模式,当Activity实例已经在后台存在时,后续调用startActivity不会重新创建实例,系统也不会默认更新Activity持有的原始Intent对象。你在onResume中调用getIntent()拿到的始终是首次启动Activity时的旧Intent,因此只能读取到第一次传入的参数,后续新传的extra都拿不到。

修复方法

只需要在TestActivity1和TestActivity2两个类中重写onNewIntent方法,主动更新当前Activity持有的Intent即可,不需要修改其他现有逻辑:

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    // 替换为新传入的Intent,后续调用getIntent就会返回最新的对象
    setIntent(intent);
}

添加后重启测试,就能正常读取每次跳转传入的新参数了。

适配跨应用通信的补充建议

如果是两个独立应用互相跳转的场景,建议在启动Intent中添加FLAG_ACTIVITY_NEW_TASK标记,适配跨应用启动的系统规则;同时传参用的Key建议定义为全局公共常量,避免两边拼写不一致导致读取失败。

内容的提问来源于stack exchange,提问作者Atila Rives

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 04:24:03