Android11导航和返回堆栈
创始人
2024-08-20 10:00:21
0

在 Activity 中使用新的 BackHandler API

Android 11 中的新导航体系重新设计了返回堆栈。在此之前,应用程序使用 onBackPressed() 回调和任务(task)堆栈来管理返回。现在,应用程序通常使用导航组件和目的地(destination)图形来处理此堆栈,该图形允许应用程序开发人员更好地描述应用程序的目的地之间的关系。

为了更好地支持此新的导航体系,Android 11 引入了新的 BackHandler API。该 API 允许应用程序开发人员在 Activity 中自定义返回行为,而无需依赖基于任务的逻辑。使用 BackHandler API,您可以:

  • 定义某些目的地(destination)的返回行为。
  • 解析 Intent 中的目的地标记,以便更好地了解应用程序启动时要负责打开的 Fragment。
  • 在需要知道当前正在显示的 Fragment 时轻松获取向后导航时的源 Fragment。
  • 更好地控制系统级返回行为,例如在 UserManager 设置中。

在示例代码中,我们使用 BackHandler API 将返回行为定制为以下目的地(destination):

  • 如果将在应用程序主页上按下返回键,则应该退出应用程序。
  • 如果将在登录屏幕上按下返回键,则应该结束登录流程并退出应用程序。
  • 如果将在授权视图(Authorization View)上按下返回键,则应该关闭该视图并返回上一个 Fragment。
// 定义返回行为
val backHandler = { destination: Destination ->
    when (destination.id) {
        R.id.home_dest -> { // 返回主页则退出应用
            finish()
            true
        }
        R.id.login_dest -> { // 返回登录页面则结束登录并退出应用
            logout()
            finish()
            true
        }
        R.id.authorization_dest -> { // 返回授权页面则关闭该视图
            closeAuthorizationView()
            true
        }
        else -> false
    }
}

// 在 Activity 中调用 BackHandler API 处理返回行为
override fun onBackPressed() {
    val handled = NavHostFragment.findNavController(this).run {
        val currentDestination = currentDestination ?: return
        backHandler.invoke(currentDestination)
    }
    if (!handled) {
        super.onBackPressed()
    }
}

通过使用 BackHandler API,应用程序开发人员可以更好地控制应用程序中的返回行为,并在需要时目标特定的目的地。

相关内容

热门资讯

目前!白银胡乐修改器!切实真的... 目前!白银胡乐修改器!切实真的有辅助平台(有挂方法)-哔哩哔哩1、完成白银胡乐修改器有辅助插件,帮助...
为了进一步!兴动互娱技巧!总是... 为了进一步!兴动互娱技巧!总是真的有辅助平台(发现有挂)-哔哩哔哩1、不需要AI权限,帮助你快速的进...
长期以来!中至小程序破檞!确实... 长期以来!中至小程序破檞!确实存在有辅助安装(存在有挂)-哔哩哔哩1、该软件可以轻松地帮助玩家将中至...
昨日!来玩app辅助器!果然是... 昨日!来玩app辅助器!果然是有辅助器(发现有挂)-哔哩哔哩1)来玩app辅助器有没有挂:进一步探索...
事发当天!八闽掌上十八卦脚本!... 事发当天!八闽掌上十八卦脚本!总是是真的辅助安装(有挂神器)-哔哩哔哩1、八闽掌上十八卦脚本免费辅助...
经调查!同城游辅助!果然存在有... 经调查!同城游辅助!果然存在有辅助安装(有挂总结)-哔哩哔哩同城游辅助是不是有人用挂微扑克wpk插件...
随着!微乐河南小程序微乐辅助脚... 随着!微乐河南小程序微乐辅助脚本!本来存在有辅助下载(有挂分享)-哔哩哔哩1)微乐河南小程序微乐辅助...
连日来!蜀山四川辅助!果然真的... 连日来!蜀山四川辅助!果然真的有辅助器(有挂头条)-哔哩哔哩在进入蜀山四川辅助软件靠谱后,参与本局比...
截至发稿!小程序财神十三张祈福... 截至发稿!小程序财神十三张祈福!确实是有辅助神器(有挂技巧)-哔哩哔哩截至发稿!小程序财神十三张祈福...
于此同时!随意玩怎么创建聚乐部... 于此同时!随意玩怎么创建聚乐部!原来有挂辅助器(果真有挂)-哔哩哔哩1、随意玩怎么创建聚乐部免费辅助...