我有4个活动说Act1
,Act2
,Act3
和Act4
。 Act1中的按钮打开Act2,Act2中的按钮打开Act3,Act3中的按钮打开Act4。
我想要做两件事:
尝试使用finish();
,但它不符合我的要求。
在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();
}
这将退出您的应用。
我用这个方法: 1.在将关闭剩余活动的第一个活动中创建静态活动。 2.然后在这样的静态方法中调用它,它将从你调用它的任何地方关闭应用程序。
public static Activity activity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activity=this;
}
public static void CloseApp(){
activity.finish();
}
托盘这一个
Intent intent =new Intent(MainActivity.this, ClassName.class);
finish
startActivity(intent);
使用intent启动Activity1
并尝试在finishAffinity()
的onBackPressed()
中调用Activity1
。
看看这个链接:
您可以使用 :
@Override
public void onBackPressed()
{
moveTaskToBack(true);
}
在关闭应用程序的所有活动中。
Intent intent = new Intent(Act4.this, Act1.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
在切换回上一个活动之前清除该标志。它可能对你有帮助。
当你进入下一个活动时完成之前的活动意味着在finish();
之后写startactivity(intent);
并写下代码以从第四个活动的按钮点击事件开始第一个活动。
Intent in1=new Intent(Act4.this, Act1.class);
startActivity(in1);
finish();
并在所有活动中的Exit按钮的Click事件中写下代码。
finish();
将此代码放在您的应用中:
moveTaskToBack(true);
android.os.Process.killProcess(Process.myPid());
System.exit(1);
如果您有另一个活动(在应用程序活动堆栈中),您可以使用finish()
退出当前活动。
但是,后退函数也假设从应用程序活动堆栈中删除当前活动。
根据我的经验,依赖后台堆栈中的活动(在应用程序活动堆栈中)是非常不可靠的。因此,当我更深入时,我曾经退出每个活动。
在你的情况下:
Act 1 -> exit -> Act 2 -> exit -> Act 3 -> exit -> Act 4 -> exit -> Act 1 -> exit
上述方法将退出所有活动。
但是,如果要在后台运行某些代码,最好依赖“服务”而不是“活动”。您可以在完成指定的工作后退出“服务”。
Do a
<code>
try
{
finalize();
finish
}
catch(Exception error)
{
error.printStackTrace();
}
//This would exit your App neatly
</code>
我使用的方法是用startActivityForResult
开始所有的孩子活动。然后我可以在退出任何孩子时放入Extra(“STATE”,some_value)并使用状态值来确定通过父母做什么。
如果我想从深度子项退出应用程序,“STATE”将是“退出”,层次结构中的每个子项只需获取“退出”的StringExtra,执行putExtra(“STATE”,“exit”)并调用完成()然后应用程序最终会调用finish()。您可以使用它来实现任何所需的状态。
使用startActivityForResult以这种方式传递消息可以避免将笨拙的引用传递给子活动,并简化了设置应用程序所需状态的方法。
在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" />