zoukankan      html  css  js  c++  java
  • 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中究竟是怎么样来使用呢?点击查看源码


  • 相关阅读:
    StructureMap经典的IoC/DI容器
    移植的7zip到Vxworks 取名vx7zip
    试验Boost在Vxworks上的应用日记 三
    Log4cpp 崩溃
    试验Boost在Vxworks上的应用日记 一
    Vx7zip改进
    GoAhead 2.5 Web Server 网页ROM化的改进
    试验Boost在Vxworks上的应用日记 二
    原来CoreBluetooth 只支持Bluetooth Low Energy
    可变长结构体
  • 原文地址:https://www.cnblogs.com/fengju/p/6336152.html
Copyright © 2011-2022 走看看