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

Android 14(API 34)Activity返回栈行为异常原因咨询

Android 14(API 34)Activity返回流程异常的根因解析

问题背景

此前在Android 13中正常的Activity跳转流程A→B→C,升级到Android 14后,从C返回时不再回到A,而是停留在B。已知在Activity B启动C时添加finish()可解决问题,但需明确系统变更导致的根因。

导致问题的Android 14核心变更

这是Android 14对隐式广播接收器的限制强化所引发的:

  • 在Android 13及更早版本中,静态注册的广播接收器即使未显式设置android:exported属性,也能接收自定义隐式广播(如你代码中action="FINISH"的广播)。因此C发送广播后,B的接收器能收到并执行finish(),任务栈变为A→C,C销毁后自然回到A。
  • 但Android 14严格要求:静态注册的广播接收器若要接收隐式广播,必须显式设置android:exported="true";若设置为false,则仅能接收应用内部的显式广播或系统白名单内的广播。你提到适配Android 14时修改了广播接收器的export属性,大概率是设置为false,导致B的接收器无法收到C发送的隐式广播,B未被销毁,任务栈仍为A→B→C,C销毁后就回到B。

代码逻辑验证

从你提供的代码来看:

  • Activity B启动C的代码仅执行了startActivity(),未主动销毁自己;
  • Activity C通过发送action="FINISH"的隐式广播通知B销毁,再自行finish()。

在Android 14中,由于广播接收器的export属性限制,这个通知逻辑失效,B保留在任务栈中,最终导致返回流程变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 05:48:15