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

Android Kotlin:onBackPressedDispatcher.onBackPressed()是否会结束Activity?

关于onBackPressedDispatcher.onBackPressed()的执行逻辑说明

调用onBackPressedDispatcher.onBackPressed()不会直接结束当前Activity,它的核心作用是触发已注册的OnBackPressedCallback回调流程,是否关闭Activity完全取决于你在回调中编写的逻辑。

两种代码的具体作用:

  • 按钮点击代码:

    button.setOnClickListener {
        onBackPressedDispatcher.onBackPressed()
    }
    

    这段代码只是触发onBackPressedDispatcher的回调触发机制,本身不执行关闭Activity的操作。如果没有提前注册自定义回调,它会执行系统默认的返回逻辑(比如回到栈内上一个Activity),但这是系统底层的默认行为,并非该方法直接调用了finish()。

  • 回调注册代码:

    onBackPressedDispatcher.addCallback(this, object: OnBackPressedCallback(true) {
        override fun handleOnBackPressed() {
            finish()
        }
    })
    

    这段代码给onBackPressedDispatcher绑定了一个自定义回调,当你调用onBackPressed()时,就会执行handleOnBackPressed()里的代码——这里写了finish(),才会触发当前Activity的关闭。

另外需要注意:如果注册了多个OnBackPressedCallback,onBackPressedDispatcher会按优先级(注册顺序或手动设置的优先级)依次触发,只有回调的isEnabled为true时才会被执行。如果所有自定义回调都未处理返回逻辑,才会降级执行系统默认的返回行为。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:01:18