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

Android按钮调用onPause/onStop/onDestroy退出应用问题求助

问题分析与解决方案

嘿,我懂你想通过按钮触发Activity的完整销毁流程,但你现在的写法其实走不通——直接调用MainActivity.super.onPause()、super.onStop()、super.onDestroy()只是执行了父类的回调逻辑,并不会让系统真正处理Activity的销毁,你的Activity其实还会留在内存里,根本没真正退出。

正确的做法

Android系统设计了专门的方法来触发Activity的销毁流程,你只需要调用finish()就够了!当你调用finish()时,系统会自动按标准生命周期依次调用onPause()、onStop()、onDestroy(),完全符合你想要的效果。

修改后的代码应该是这样:

Button exitBtn = (Button) findViewById(R.id.exitBtn);
exitBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // 触发Activity销毁流程,系统会自动调用对应的生命周期方法
        finish();
    }
});

额外说明:如果要退出整个应用(多Activity场景)

如果你的应用有多个Activity栈,想一次性关闭所有Activity退出应用,可以用finishAffinity()(适用于API 16及以上):

exitBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        finishAffinity();
        // 可选:如果需要彻底终止进程,谨慎使用
        // System.exit(0);
    }
});

不过System.exit(0)不推荐随便用,因为它会直接终止进程,可能导致一些资源来不及释放,优先用finishAffinity()来正常关闭所有Activity。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:04:39