退出/完成一个应用程序/活动 - android

kum*_*ded 16 android exit activity-finish android-activity

我有4个活动说Act1,Act2,Act3Act4.Act1中的按钮打开Act2,Act2中的按钮打开Act3,Act3中的按钮打开Act4.

我想要做两件事:

  1. 我在Act4中有一个按钮,用户指向Act1,问题是当用户点击Act1时,我想关闭应用而不是打开Act4 ..

  2. 当用户选择它时,我在所有活动的菜单'exit'中有选项,我想关闭应用程序而不是回到之前的活动.

尝试使用,finish();但它不符合我的要求.

Pra*_*mar 32

使用下面的代码在你的Act4"日Menu.xml"的退出按钮-

Intent intent = new Intent(Act4.this, Act1.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

并且,在您的第一个活动的onCreate()方法中,只需输入以下代码 -

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

这将退出您的应用.

  • 你的方法很好。但是我要说的是要小心,如果super.onDestroy()或super.onCreate()待处理,那么在您调用finish()之后,那些仍然会被调用。如果您已经将另一个活动的onCreate()或onResume()子类化了,那您将有不希望的行为。 (2认同)

Kri*_*har 8

看看这个链接:

点击这里

您可以使用 :

@Override
public void onBackPressed()
{
     moveTaskToBack(true);
}
Run Code Online (Sandbox Code Playgroud)

在关闭应用程序的所有活动中.

  • 这不会退出应用程序.它将任务移动到后台.如果用户然后长按HOME键并选择此应用程序,它将返回到前台,活动仍然在任务中,就像之前一样. (3认同)

小智 5

Intent intent = new Intent(Act4.this, Act1.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

在切换回之前的活动之前清除该标志。它可能对你有帮助。


Man*_*uni 5

将此代码放入您的应用程序中:

moveTaskToBack(true);
android.os.Process.killProcess(Process.myPid());
System.exit(1);
Run Code Online (Sandbox Code Playgroud)