// 不能把应用程序完全杀死,并且也不会把当前的Activity栈清空。
android.os.Process.killProcess(android.os.Process.myPid())
// 不会把自己的应用程序杀死。
System.exit(0);
// 可以杀死别的程序的进程,但是无法杀死自己的进程。
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
manager.restartPackage(getPackageName());
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
【正确的使用方法】
创建出来整个应用程序的 全局的实例。
在整个应用程序的进程第一次被创建的时候 执行。
1 import java.util.LinkedList; 2 import java.util.List; 3 import android.app.Activity; 4 import android.app.Application; 5 6 /** 8 * Title: ExitApplication.java</br> 9 * Description:退出APP </br> 10 * Create Date:2012-10-11 </br> History: <br/> 11 * -------Date-----------Modifer-------------------Remark------------- 12 * 2012-8-7 DuanRan create 13 * @author: duanran<br/> 14 */ 15 public class ExitApplication extends Application { 16 17 private List<Activity> activityList = new LinkedList<Activity>(); 18 private static ExitApplication instance; 19 20 private ExitApplication() { 21 22 } 23 24 // 单例模式获取唯一的exitapplication 25 public static ExitApplication getInstance() { 26 if (null == instance) { 27 instance = new ExitApplication(); 28 } 29 return instance; 30 } 31 32 // 添加activity到容器中 33 public void addActivity(Activity activity) { 34 if(!activityList.contains(activity)) 35 activityList.add(activity); 36 37 } 38 39 // 遍历所有的Activiy并finish 40 public void exit() { 41 for (Activity activity : activityList) { 42 activity.finish(); 43 } 44 System.exit(0); 45 } 46 47 public void remove(Activity ar){ 48 activityList.remove(ar); 49 } 50 }
在配置文件中,application中加入 android:name="ExitApplication".
在Activity中调用:
// 初始化的时候使用,把当前Activity添加进去
ExitApplication.getInstance().addActivity(this);
// 退出程序的时候,把所有Activity删除掉
ExitApplication.getInstance().remove(this);