System.exit(0)不closures我的所有活动?
我有2个活动,所以活动1去活动2然后活动2我有一个退出button。 但是当我点击它时,它只会退出活动编号2并再次返回活动1。 它基本上感觉就像我刚刚开始申请。 我不知道为什么?
这是我的代码。
Button btExit = (Button) findViewById(R.id.btExit); btExit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); System.exit(0); } });
System.exit(0);
是Android应用程序终止的坏方法。 Android在它自己的操作系统中pipe理它
您可以通过相应的Intent调出Home应用程序:
Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);
希望这可以帮助
编辑: –
那么我想你的目标是完成所有堆积的活动。
这里是 :-
closures所有以前的活动如下:
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(); }
结果将与上面相同,但是因为所有堆积的活动都已closures,所以当您回到应用程序时,它必须从您的主要活动(即启动程序活动)开始。
希望这可以帮助。
不要使用System.exit
。
如果您希望用户从任何Activity
closures应用程序,我build议使用startActivityForResult
,在第一个Activity
检查onActivityResult
中的返回值,并在那里调用finish()
。
您可以模拟点击主页button:
Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);
但是这不会closures应用程序
closures它 ,你可以做https://stackoverflow.com/a/9735524/1434631
使用finish()和sharedPreference标志并在单击button时设置标志。 在你的其他活动中,检查标志并完成标志设置()
调用finish();
完成第一个活动finish();
在传递意图开始下一个活动之后的button上。
System.exit(0)不适用于closures应用程序
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" />