转自:http://blog.163.com/zhaolin53636848@126/blog/static/49086668201201643418630/
在开发一个android应用软件时,考虑如何关闭应用程序的问题。一开始采用当前Activity调用finish()来完成,但这种做法是不对的。
对于finish()方法System.exit(0),android.os.Process.killProcess(android.os.Process.myPid()) ,只能关闭当前的Action,对于单Activity的应用程序有效,如果对于有多外 Activity 的应用程序它就无能为力了。 下面我介绍一下对于多个 Activity 的应用程序的完全关闭方法:在 ActivityManager 类中提供了如下的方法:
所以如果要关闭整个应用程序的话只需要运行以下两行代码就行:
ActivityManager activityMgr= (ActivityManager) this.getSystemService(ACTIVITY_SERVICE );
activityMgr.restartPackage(getPackageName());
最后还需要添加这个权限才行:
<!-- 关闭应用程序的权限 -->
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
多网友可能发现自己的Android程序有很多Activity,比如说主窗口A,调用了子窗口B,在B中如何关闭整个Android应用程序呢? 这里给大家三种比较简单的方法实现。
Intent intent = new Intent();
intent.setClass(Android123.this, CWJ.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
接下来在B窗口中需要退出时直接使用finish方法即可全部退出。
或者
跳转到应用程序MainActivity,然后finish(),注意Intent.Flag设置为FLAG_ACTIVITY_CLEAR_TOP;
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(startMain);
finish();