System.exit(0)没有关闭我的所有活动?

zBa*_*hLe 10 android android-activity

我有2个活动,所以活动1转到活动2然后活动2我有一个退出按钮.但是当我点击它时,它只退出活动编号2并再次返回活动1.它基本上感觉就像我刚刚启动应用程序.我不知道为什么?

这是我的代码.

Button btExit = (Button) findViewById(R.id.btExit);
    btExit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();
            System.exit(0);
        }
    });
Run Code Online (Sandbox Code Playgroud)

CRU*_*DER 45

System.exit(0);
Run Code Online (Sandbox Code Playgroud)

是一个终止Android应用程序的坏方法.Android在自己的操作系统中管理它

您可以通过相应的Intent调出Home应用程序:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助

编辑: -

然后我想你的目标是完成所有堆积的活动..

这里是 :-

关闭所有以前的活动如下:

Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("Exit me", true);
startActivity(intent);
finish();
Run Code Online (Sandbox Code Playgroud)

然后在MainActivity onCreate()方法中添加此项以完成MainActivity

if( getIntent().getBooleanExtra("Exit me", false)){
    finish();
}
Run Code Online (Sandbox Code Playgroud)

结果将与上述相同,但由于所有堆叠活动都已关闭,当您返回到应用程序时,它必须从您的主要活动(即启动器活动)开始.

希望这可以帮助.


Mac*_*ski 7

不要用System.exit.

如果您希望用户从Activity我建议使用的任何应用程序中关闭应用程序,请先startActivityForResult检查返回值并onActivityResult在此处Activity调用finish().

  • 为什么?完成不会关闭应用程序,只关闭活动.人们,试着理解我们还有许多其他不是从Activity派生的类.它们可用于自动化数据库连接,存储登录ID,用户名,最后查询结果......因此,关闭活动不会解决生产环境中的问题.Aaa,cześćMaciek;) (3认同)