Android退出程序(一)——单例模式

首先说明的一点就是,真正意义上的完全退出程序在应用层上其实还是做不到的。我们在应用层上所做的退出程序,都只是关闭了当前的前台程序,而后台程序其实还是在运行着的。

这里我们的思路就是把所有的Activity收集起来,然后再统一进行关闭。那么怎么来收集Activity呢?我们都知道Activity是一个对象,那么是用数组吗?如果用数组,我们就得给一个定长的数组来进行限制,数组的大小大了不好,小了更是是要命的事。那用什么?我们对对象的收集处理一般是用List<...>或是其衍生。。。

这里我们用List<Activity>来保存Activity:

private List<Activity> activityList = new LinkedList<Activity>();
再定义一个对外的方法接口,用于接收Activity:

public void addActivity(Activity activity) {
        activityList.add(activity);
    }
最后统一finish();

public void exit() {
        for (Activity activity : activityList) {
            activity.finish();
        }
        System.exit(0);
    }
当我们创建了一个Activity的同时,我们就把这个Activity添加到我们List<Activity>中来,如下:

EyeApplicationManager.getInstance().addActivity(this);

---------------------------------------- 管理Activity退出类的代码如下 ---------------------------------------

package com.android.password.application;

import java.util.LinkedList;
import java.util.List;

import android.app.Activity;

/**
 * 这个类是用单例模式实现的一个
 * 用来退出程序的类
 * @author William-H
 * 开发日期:2014年8月22日
 */
public class EyeApplicationManager {

    private List<Activity> activityList = new LinkedList<Activity>();
    private static EyeApplicationManager instance;

    private EyeApplicationManager() {
    }

    /**
     * 单例模式中获取唯一的MyApplication实例
     * @return
     */
    public static EyeApplicationManager getInstance() {
        if (null == instance) {
            instance = new EyeApplicationManager();
        }
        return instance;
    }

    /**
     * 添加Activity到容器中
     * @param activity
     */
    public void addActivity(Activity activity) {
        activityList.add(activity);
    }

    /**
     * 遍历所有Activity并finish
     */
    public void exit() {
        for (Activity activity : activityList) {
            activity.finish();
        }
        System.exit(0);
    }
}
如果你足够细致,我想你应该会发现,其实,这个类能做的可不是只有退出程序这么简单。。。

关于退出程序,我之前也有写过一篇是关于双击返回键退出程序,点击连接进行博客。。。

那在Demo中究竟是怎么样来使用呢?点击查看源码


原文地址:https://www.cnblogs.com/fengju/p/6336152.html