Navigation Component 隐式深层链接按返回键直接退出应用问题咨询
隐式深链返回直接退出应用问题排查 & Back与Up按钮区别
隐式深链点击返回直接退出应用的常见配置问题
- 检查AndroidManifest中目标Activity的启动模式配置,如果设置了
android:launchMode="singleTask"、singleInstance或singleInstancePerTask,系统会将该Activity放入独立于触发应用的新任务栈中,栈中只有该Activity时按返回键就会直接退出栈,回到桌面。请将启动模式改为默认的standard或singleTop即可。 - 检查Navigation导航图中deepLink的配置,是否添加了
app:launchSingleTop="true"或者popUpTo相关配置且开启了popUpToInclusive="true",这类配置会清空导航栈内已有页面,导致当前页面成为栈内唯一页面,按返回直接退出。 - 检查测试跳转的场景,如果你是从浏览器地址栏直接输入链接触发跳转,部分浏览器会默认给跳转Intent添加
FLAG_ACTIVITY_NEW_TASK标记,强制在新任务栈打开你的页面,就会出现返回直接退出的问题。你可以将链接输入到系统备忘录、短信等应用内点击跳转测试,排除浏览器的标记干扰。 - 检查目标Activity的初始化逻辑,是否存在启动后主动调用
finish()关闭应用根页面的逻辑,或者跳转目标页时执行了清空栈的操作。
官方文档对应说明翻译:如果未设置该标记,你会停留在触发隐式深链的上一个应用的任务栈中。该场景下,返回键会带你回到上一个应用,而向上按钮会在你的导航图层级内,将你的应用任务启动到对应父目的地。
Back按钮与Up按钮的功能区别
- Back按钮(系统物理/手势返回键):遵循任务栈历史操作顺序逻辑,仅和当前所在的任务栈有关,按返回时会按倒序弹出栈顶的最近操作页面,不限制是否属于同一个应用。如果当前页面在其他应用的任务栈中打开,按返回就会回到上一个应用的对应页面;如果当前任务栈已空,就会回到系统桌面。
- Up按钮(应用界面左上角的向上箭头):遵循应用内导航层级逻辑,和任务栈无关,仅和当前页面在应用导航图中配置的父子层级有关。无论你从哪个入口进入当前页面,按向上都会跳转到当前页预设的父页面;如果当前页已经是应用的根页面,按向上会退出当前应用的任务,回到触发该任务的上一个入口。
内容的提问来源于stack exchange,提问作者Abhishek AN
相关产品推荐
相关产品推荐

