安卓应用固定模式下登出后点击返回键未触发取消固定原生提示问题
问题根因
你当前的登出逻辑破坏了系统固定应用功能依赖的任务栈结构:
finishAffinity()会销毁当前任务栈内的所有Activity,直接清空了系统标记为「已固定」的原始任务栈- 你给跳转SplashActivity的Intent加了
FLAG_ACTIVITY_NEW_TASK,会新起一个独立任务栈承载Splash和后续的SignIn页面,系统不会把这个新任务栈识别为之前固定的任务栈,所以按返回键只会正常回退新任务栈的页面,不会触发取消固定的系统提示。
修复方案
调整登出跳转逻辑,不要销毁原有固定任务栈,仅清理任务栈内登录态相关页面即可,修改后的代码如下:
val intent = Intent(activity, SplashActivity::class.java) intent.putExtra(Constants.BUNDLE_KEYS.IS_SIGNED_OUT, true) // 新增这两个Flag,清空原有任务栈内Splash之上的所有页面,避免返回回到登出前的用户页 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) activity?.startActivity(intent) // 仅销毁当前触发登出的页面即可,不要调用finishAffinity清空整个任务栈 activity?.finish()
额外验证点
如果你的SignIn页面重写了onBackPressed/onBackPressedDispatcher的返回逻辑,不要在登出场景下自行处理返回操作,保留系统默认的返回逻辑才能触发固定应用的取消提示。
内容的提问来源于stack exchange,提问作者Sruthi Krithika
相关产品推荐
相关产品推荐

