使用getOnBackPressedDispatcher实现返回键退出应用遇问题求助
问题分析与解决
你当前代码的问题在于:在handleOnBackPressed()中调用finish()只会关闭当前的SecondActivity,系统会自动回到任务栈中的上一个Activity(也就是MainActivity),这和你想要直接退出应用的需求不符。
正确实现方式
修改SecondActivity中的回调逻辑,将finish()替换为finishAffinity(),代码如下:
public class SecondActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) { @Override public void handleOnBackPressed(){ // 结束当前任务栈中所有Activity,直接退出应用 finishAffinity(); // 如果需要确保完全退出,可额外添加以下代码(可选) // System.exit(0); } }); } }
说明
finishAffinity()方法会结束当前Activity所属任务栈中的所有Activity,这样整个应用的Activity都会被清理,从而实现直接退出应用的效果。- 如果你需要兼容更低版本的Android系统(API 16及以上),
finishAffinity()都是可用的;如果是Android 12(API 31)及以上,也可以使用finishAndRemoveTask(),效果类似。
内容的提问来源于stack exchange,提问作者Hussain Akbar
相关产品推荐
相关产品推荐

