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); } }); 

  • 如何将对象传递给另一个活动?
  • popup式菜单离开屏幕
  • 关于Android中自定义权限的几个问题
  • Android:无法销毁活动
  • 活动生命周期方法:onPostResume意义
  • 在Android应用程序的webview中加载URL时启动屏幕
  • ActionBarActivity和片段活动的区别
  • android - 如何关闭按钮点击活动?
  •  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" />