我有2个活动,所以活动1转到活动2然后活动2我有一个退出按钮。但是当我点击它时,它只退出活动编号2并再次返回活动1。它基本上感觉就像我刚刚启动应用程序。我不确定为什么?
这是我的代码。
Button btExit = (Button) findViewById(R.id.btExit);
btExit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
System.exit(0);
}
});
答案 0 :(得分:43)
System.exit(0);
是终止Android应用程序的坏方法。 Android在自己的操作系统中管理它
您可以通过相应的Intent:
调出Home应用程序Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
希望这会有所帮助
编辑: -
然后我想你的目标是完成所有堆积的活动..
这是: -
按以下步骤结束所有以前的活动:
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("Exit me", true);
startActivity(intent);
finish();
然后在 MainActivity onCreate()
方法中添加此内容以完成MainActivity
if( getIntent().getBooleanExtra("Exit me", false)){
finish();
}
结果将与上述相同,但由于所有堆叠活动都已关闭,当您回到应用程序时,它必须从您的主要活动开始,即启动器活动。
希望这有帮助。
答案 1 :(得分:7)
请勿使用System.exit
。
如果您希望用户关闭来自任何Activity
的应用,我建议您使用startActivityForResult
,先检查onActivityResult
中Activity
的返回值并在其中调用finish()
太
答案 2 :(得分:4)
您可以模拟按下主页按钮:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
但这不会关闭应用 ..
答案 3 :(得分:0)
使用finish()和sharedPreference标志,并在单击按钮时设置标志。在你的其他活动上,检查标志并完成()如果设置了标志
答案 4 :(得分:0)
在传递意图后开始下一个活动,在按钮上调用finish();
完成第一个活动。
答案 5 :(得分:0)
ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
am.killBackgroundProcesses("com.root.abc");
System.runFinalizersOnExit(true);
System.exit(0);
add Manifest permission
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
答案 6 :(得分:0)
使用
finishAffinity();
退出应用程序。
finish()
只会从活动堆栈中清除活动。