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

时间:2012-06-18 10:44:18

标签: android android-activity exit activity-finish

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

我想要做两件事:

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

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

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

12 个答案:

答案 0 :(得分:31)

Act4'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();
}

这将退出您的应用。

答案 1 :(得分:8)

点击此链接:

Click here

您可以使用:

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

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

答案 2 :(得分: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);

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

答案 3 :(得分:2)

当您转到下一个活动时完成上一个活动意味着在finish();之后写startactivity(intent);并在下面写下代码,以便从第四个活动的按钮点击事件开始第一个活动。

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

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

finish();

答案 4 :(得分:1)

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

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

答案 5 :(得分:0)

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

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

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

答案 6 :(得分:0)

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

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

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

在你的情况下:

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

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

但是,如果你想在后台运行一些代码,最好依靠"服务"而不是"活动"。你可以让"服务"在完成指定工作后退出。

答案 7 :(得分:0)

<div ng-controller="MainCtrl">
<progressbar ng-show="data.progress < 100" value="data.progress" class="progress-striped active" animate="true" max="100"></progressbar>
<button ng-click="test()">test</button>

答案 8 :(得分:0)

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

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

答案 9 :(得分: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" />

答案 10 :(得分:-1)

托盘这个

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

答案 11 :(得分:-1)

使用意图启动Activity1并尝试拨打finishAffinity() onBackPressed()中的Activity1