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

问题描述 投票:16回答:12

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

我想要做两件事:

  1. 我在Act 4中有一个按钮,用户指向Act1,问题是当用户点击Act1时,我想关闭应用而不是打开Act 4 ..
  2. 当用户选择它时,我在所有活动的菜单'exit'中有选项,我想关闭应用程序而不是回到之前的活动。

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

android android-activity exit activity-finish
12个回答
31
投票

Act4'th Menu.xml的退出按钮中使用以下代码 -

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

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

if (getIntent().getBooleanExtra("EXIT", false)) 
{
    finish();
}

这将退出您的应用。


0
投票

我用这个方法: 1.在将关闭剩余活动的第一个活动中创建静态活动。 2.然后在这样的静态方法中调用它,它将从你调用它的任何地方关闭应用程序。

public static Activity activity;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    activity=this;
}
public static void CloseApp(){
    activity.finish();
} 

-1
投票

托盘这一个

Intent intent =new Intent(MainActivity.this, ClassName.class);
  finish
startActivity(intent);

-1
投票

使用intent启动Activity1并尝试在finishAffinity()onBackPressed()中调用Activity1


8
投票

看看这个链接:

Click here

您可以使用 :

@Override
public void onBackPressed()
{
     moveTaskToBack(true);
}

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


3
投票
Intent intent = new Intent(Act4.this, Act1.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

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


2
投票

当你进入下一个活动时完成之前的活动意味着在finish();之后写startactivity(intent);并写下代码以从第四个活动的按钮点击事件开始第一个活动。

Intent in1=new Intent(Act4.this, Act1.class);
startActivity(in1);
finish();

并在所有活动中的Exit按钮的Click事件中写下代码。

finish();

1
投票

将此代码放在您的应用中:

moveTaskToBack(true);
android.os.Process.killProcess(Process.myPid());
System.exit(1);

0
投票

如果您有另一个活动(在应用程序活动堆栈中),您可以使用finish()退出当前活动。

但是,后退函数也假设从应用程序活动堆栈中删除当前活动。

根据我的经验,依赖后台堆栈中的活动(在应用程序活动堆栈中)是非常不可靠的。因此,当我更深入时,我曾经退出每个活动。

在你的情况下:

Act 1 -> exit -> Act 2 -> exit -> Act 3 -> exit -> Act 4 -> exit -> Act 1 -> exit 

上述方法将退出所有活动。

但是,如果要在后台运行某些代码,最好依赖“服务”而不是“活动”。您可以在完成指定的工作后退出“服务”。


0
投票
Do a 
<code>

try
{
finalize();
finish
}
catch(Exception error)
{
error.printStackTrace();
}
//This would exit your App neatly
</code>

0
投票

我使用的方法是用startActivityForResult开始所有的孩子活动。然后我可以在退出任何孩子时放入Extra(“STATE”,some_value)并使用状态值来确定通过父母做什么。

如果我想从深度子项退出应用程序,“STATE”将是“退出”,层次结构中的每个子项只需获取“退出”的StringExtra,执行putExtra(“STATE”,“exit”)并调用完成()然后应用程序最终会调用finish()。您可以使用它来实现任何所需的状态。

使用startActivityForResult以这种方式传递消息可以避免将笨拙的引用传递给子活动,并简化了设置应用程序所需状态的方法。


0
投票

在AndroidManifest.xml文件中使用android:noHistory = "true"

    <activity
        android:name=".Act1"
        android:noHistory="true" />
    <activity
        android:name=".Act2"
        android:noHistory="true" />
    <activity
        android:name=".Act3"
        android:noHistory="true" />
    <activity
        android:name=".Act4"
        android:noHistory="true" />
© www.soinside.com 2019 - 2024. All rights reserved.