Android 一键退出

有的时候我们的项目需要用到一键退出的功能,但是网上大多数退出功能都是使用一个集合,然后放在基类里边,分别添加每一个 Activity 到集合里边,然后在取出每个 Activity 进行销毁,代码如下:
    private List<Activity> activityList = new ArrayList<>();
    activityList.add(this);
    /**
     * 一键退出
     */
    public void finishActivity() {
        activities.clear();
        for (int i = 0; i < activityList.size(); i++) {
            activityList.get(i).finish();
        }
    }
这么写,如果对于一些新手或者不了解 Android 回收机制的人来说就是一个完美的解决办法,但是当你真正了解过 Android 的回收机制之后,你就会发现,这么写是多么的愚蠢,具体为什么我就不多做解释了,请读者自己查找相关资料了解 Android 的回收机制,这里给出正确的代码,但是不代表这是完美的解决方案,代码如下:
    private List<SoftReference<Activity>> activities = new ArrayList<>();
    
    SoftReference<Activity> activitySoftReference = new SoftReference<Activity>(this);
    activities.add(activitySoftReference);
    
    /**
     * 一键退出
     */
    public void finishActivity() {
        for (int i = 0; i < activities.size(); i++) {
            SoftReference<Activity> softReference = activities.get(i);
            if(softReference.get() != null) {
                softReference.get().finish();
            }
        }
        activities.clear();
    }

猜你喜欢

转载自blog.csdn.net/sinat_29874521/article/details/80192613