彻底结束进程

来源:互联网 发布:hdmi网络传输器 编辑:程序博客网 时间:2024/06/04 18:22

有的同学说我有好几个activity界面 但是这个退出了那个没退出的问题。。现在我就来说一下这个怎么退出进程。

分为3种方式

1 this.finish();

这只是kill一个当前activity

 

2 System.exit(0);

 

退出程序 建议最后调用 这是群里的大大说了 不明真相

 

3 android.os.Process.killProcess(android.os.Process.myPid());

这貌似是2.2新增的方法?不过貌似要加权限的

API Level最小为8,killBackgroundProcesses是android.app.ActivityManager类的方法,使用时必须在androidmanifest.xml文件中加入KILL_BACKGROUND_PROCESSES这个权限。虽然本类还提供了restartPackage (String packageName) 方法调用的API Level为3,但是SDK中已经标记为deprecated,其实他们的原理都是一样的,只不过过去Google的命名方式确实不是很合理,restartPackage的作用很难让我们联想到是结束进程。最后一个方法需要加入权限<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES">

如果这样还不行就找Google理论一番去 不过人家已经详细说明了 不支持全部kill 这样对使用效果不好。。。。



终极解决方法

还有一种比较流行的Android经典完美退出方法,使用单例模式创建一个Activity管理对象,该对象中有一个Activity容器(具体实现自己处理,使用LinkedList等)专门负责存储新开启的每一个Activity,并且容易理解、易于操作,非常不错!

MyApplication类(储存每一个Activity,并实现关闭所有Activity的操作)

public class MyApplication extends Application {


 private List<Activity> activityList = new LinkedList<Activity>(); 
 private static MyApplication instance;
 
            private MyApplication()
            {
            }
             //单例模式中获取唯一的MyApplication实例 
             public static MyApplication getInstance()
             {
                            if(null == instance)
                          {
                             instance = new MyApplication();
                          }
                 return instance;             

             }
             //添加Activity到容器中
             public void addActivity(Activity activity)
             {
                            activityList.add(activity);
             }
             //遍历所有Activity并finish

             public void exit()
             {

                          for(Activity activity:activityList)
                         {
                           activity.finish();
                         }

                           System.exit(0);

            }
}

在每一个Activity中的onCreate方法里添加该Activity到MyApplication对象实例容器中

MyApplication.getInstance().addActivity(this);

在需要结束所有Activity的时候调用exit方法

MyApplication.getInstance().exit();


原创粉丝点击