android: 再按一次返回键退出

一,不要再使用onBackPressed

onBackPressed() 在Android 13中被弃用,
即当build中compileSdkVersion和targetSdkVersion为33及以上,onBackPressed()被弃用

二,代码:

public class MainActivity extends AppCompatActivity {

    //声明一个long类型变量:用于存放上一点击“返回键”的时刻
    private long mExitTime;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);

        getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
            @Override
            public void handleOnBackPressed() {
                // 处理返回按键事件
                Logger.d("handleOnBackPressed", "返回键被点击");
                    //与上次点击返回键时刻作差
                    if ((System.currentTimeMillis() - mExitTime) > 2000) {
                        //大于2000ms则认为是误操作,使用Toast进行提示
                        Toast.makeText(MainActivity.this, "再按一次退出程序", Toast.LENGTH_LONG).show();
                        //并记录下本次点击“返回键”的时刻,以便下次进行判断
                        mExitTime = System.currentTimeMillis();
                    } else {
                        //小于2000ms则认为是用户确实希望退出程序-调用System.exit()方法进行退出
                        System.exit(0);
                    }
            }
        });

 

三,测试效果:

 

posted @ 2025-05-24 17:55  刘宏缔的架构森林  阅读(77)  评论(0)    收藏  举报