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
相关产品推荐
相关产品推荐

