对常用的退出应用程序的改良版容器式方法做一下介绍,主要供新人了解,如果有什么不对之处,欢迎指正。它采用的是创建一个类继承Application,将app中的所有activity都添加到一个List集合中,再点击退出按钮时,遍历集合,直接销毁所有activity,重点是采用弱引用,避免内存泄露问题。
一 . 创建自定义类
public class ExitApplication extends Application { private static ExitApplication sInstance;//全局唯一应用实例 private static List<WeakReference<Activity>> sList;//存储所有界面的集合 private ExitApplication(){} /** * 获取全局唯一应用实例 * @return * 返回全局唯一应用实例 */ public static ExitApplication getInstance(){ if (sInstance == null){ synchronized (ExitApplication.class){ if (sInstance == null){ sInstance = new ExitApplication(); sList = new ArrayList<>(); } } } return sInstance; } /** * 添加传入界面到集合中 * @param activity * 传入的界面 */ public void addActivity(Activity activity){ if (sList == null){ sList = new ArrayList<>(); } sList.add(new WeakReference<>(activity)); } /** * 销毁所有界面,退出应用,并停止网络状态监听服务 * @throws Exception * 当存储界面集合为空时,抛出异常 */ public void exitApplication() throws IllegalArgumentException { if (sList == null){ throw new IllegalArgumentException("存储activity的集合为空异常!"); } for (WeakReference<Activity> reference: sList){ if (reference.get() != null){ reference.get().finish(); } } } }
二 . 在每个activity中添加
ExitApplication.getInstance().addActivity(this);
三 . 在需要实现完全退出app功能的地方添加
ExitApplication.getInstance().exitApplication();