我有一个有3个活动的Android应用程序。对于第1和第2活动,我希望后退按钮退出所有现有活动。
当后退按钮退出活动时,它会启动,但如果按下第二个活动,则会显示第一个活动,而不是退出应用程序,因为第一个活动将指向第二个活动。
我需要此功能的原因是因为第1和第2个活动使用计时器计时器,当我按下HOME按钮时它继续运行。但我需要一种方法来重置计时器以使用BACK按钮完全退出应用程序。
以下是我在第1和第2活动中出现的后退按钮的代码。
@Override
public void onBackPressed() { // method for exit confirmation
AlertDialog.Builder builder = new AlertDialog.Builder(BreakActivity.this);
builder.setMessage("Are you sure you want to exit?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
BreakActivity.this.finish();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
};
我研究过使用以下代码的可能性:
intent = new Intent(this, FinActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent)
finish();
但是,我不确定应该在哪里实现这一点,如果在按下BACK按钮后显示确认消息后选择“是”,我真的只想结束所有应用程序(请参阅第一个代码段)。
非常感谢任何有助于此工作的帮助!
谢谢
答案 0 :(得分:11)
@Rob当您从活动1导航到2和2到3时有意图 使用完成功能
像
i=new Intent(Main_Menu.this, ABC.class);
finish();
startActivity(i);
它将杀死你将进入下一个活动的活动 然后当你按下后退按钮时,它会把你带到应用程序之外, 因为堆栈中没有活动
答案 1 :(得分:7)
你可以用这个
finish();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
请注意,有一件事总是避免system.exit从应用程序中退出它不会被推荐并可能导致各种问题
https://groups.google.com/forum/?fromgroups#!topic/android-developers/Y96KnN_6RqM
答案 2 :(得分:0)
使用以下代码行:
System.exit(1);
//The integer 1 is just a return code.
答案 3 :(得分:0)
您可以使用 -
Process.killProcess(android.os.Process.myPid());
答案 4 :(得分:0)
不要调用任何System.exit或其他东西! Android架构是为了自我管理流程而构建的。 Android本身决定何时杀死应用程序进程。当您手动终止应用程序时,您将为用户设备创建额外的开销。
尝试手动重置您的计时器并修改您的应用架构。