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

如果您希望用户从任何Activityclosures应用程序,我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" />