Android学习历程之改良版容器式完全退出应用程序App

本文介绍了一种通过创建自定义类来实现应用彻底退出的方法。该方法通过继承Application类,并利用弱引用来存储所有Activity,从而避免内存泄漏,确保应用程序在退出时能够释放所有资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对常用的退出应用程序的改良版容器式方法做一下介绍,主要供新人了解,如果有什么不对之处,欢迎指正。它采用的是创建一个类继承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();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值