Activity管理类,程序退出工具类

Activity管理类, 用于管理所有的Actvity, 提供添加Activity到堆栈,结束特定Activity,结束所有的Activity等方法,在项目开发中都有必备功能:退出功能,而退出功能在项目中一般有退出应用,退出登录两种情况,这里针对这个两种情况都有实现,在此做一下记录,以备以后查阅

  1. package com.centrvideo.parkapp.util;
    import java.util.concurrent.CopyOnWriteArrayList;
    import android.app.Activity;
    import android.app.ActivityManager;
    import android.content.Context;
    import com.centrvideo.parkapp.activity.LoginActivity;
    /**
     * Activity管理类,用于管理Activity,程序退出
     * @ClassName: AppManager
     * @Description:
     * @author xiaoxiao
     * @date modify by 2015-8-17 下午1:33:27
     *
     */
    public class AppManager {
    
        private static CopyOnWriteArrayList<Activity> mActivityStack;
        private static AppManager mAppManager;
        private AppManager() {
        }
        /**
         * 单一实例
         */
        public static AppManager getInstance() {
            if (mAppManager == null) {
                mAppManager = new AppManager();
            }
            return mAppManager;
        }
        /**
         * 添加Activity到堆栈
         */
        public void addActivity(Activity activity) {
            if (mActivityStack == null) {
                mActivityStack = new CopyOnWriteArrayList<Activity>();
            }
            mActivityStack.add(activity);
        }
        /**
         * 结束指定的Activity
         */
        public void killActivity(Activity activity) {
            try {
                if (activity != null) {
                    mActivityStack.remove(activity);
                    activity.finish();
                    activity = null;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        /**
         * 结束指定类名的Activity
         */
        public void killActivity(Class<?> cls) {
            for (Activity activity : mActivityStack) {
                if (activity.getClass().equals(cls)) {
                    killActivity(activity);
                }
            }
        }
        /**
         * 结束所有Activity
         */
        public void killAllActivity() {
            for (int i = 0, size = mActivityStack.size(); i < size; i++) {
                if (null != mActivityStack.get(i)) {
                    mActivityStack.get(i).finish();
                }
            }
            mActivityStack.clear();
        }
        /**
         * 结束所有Activity除了Login
         */
        public void killAllActivityNoLogin() {
            for (int i = 0, size = mActivityStack.size(); i < size; i++) {
                if (null != mActivityStack.get(i)) {
                    if (mActivityStack.get(i).getClass()!=LoginActivity.class) {
                        mActivityStack.get(i).finish();
                    }
                }
            }
            mActivityStack.clear();
        }
        /**
         * 退出应用程序
         */
        @SuppressWarnings("deprecation")
        public void AppExit(Context context) {
            try {
                killAllActivity();
                ActivityManager activityMgr = (ActivityManager) context
                        .getSystemService(Context.ACTIVITY_SERVICE);
                activityMgr.restartPackage(context.getPackageName());
                System.exit(0);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }


来自为知笔记(Wiz)

附件列表

时间: 2024-08-29 13:23:42

Activity管理类,程序退出工具类的相关文章

黑马程序员——19,Collections工具类,Arrays工具类,高级for循环,可变参数,静态导入

------<ahref="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 黑马程序员--19,Collections工具类,Arrays工具类 /* Collections是一个类,注意,这里后面带有一个s 千万不要和Collection弄混了!Collection只是接口而已. 两者要区别开来. Collect

ListView add EmptyView 工具类和下载工具类

public class EmptyViewUtils {     public static View createLoadingView(Context context) {         LinearLayout linearLayout = (LinearLayout) LayoutInflater.from(context).inflate(R.layout.list_empty_loading, null);         linearLayout.setLayoutParams

Collections 工具类和 Arrays 工具类常见方法

Collections 工具类和 Arrays 工具类常见方法 Collections Collections 工具类常用方法: 排序 查找,替换操作 同步控制(不推荐,需要线程安全的集合类型时请考虑使用 JUC 包下的并发集合) 排序操作 void reverse(List list)//反转 void shuffle(List list)//随机排序 void sort(List list)//按自然排序的升序排序 void sort(List list, Comparator c)//定制

黑马程序员——工具类Collections的使用

工具类Collections的使用 import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class CollectionsDemos { public static void main(String[] args) { // TODO Auto-generated method stub ArrayList<String> al = new ArrayList

【Android 工具类】常用工具类(方法)大全

收集常用的工具类或者方法: 1.获取手机分辨率 /** * 获取手机分辨率 */ public static String getDisplayMetrix(Context context) { if (Constant.Screen.SCREEN_WIDTH == 0 || Constant.Screen.SCREEN_HEIGHT == 0) { if (context != null) { int width = 0; int height = 0; SharedPreferences D

Android工具类之字符串工具类,提供一些字符串相关的便捷方法

/** * 字符串工具类,提供一些字符串相关的便捷方法 */ public class StringUtil { private StringUtil() { throw new AssertionError(); } /** * is null or its length is 0 or it is made by space * <p/> * <pre> * isBlank(null) = true; * isBlank("") = true; * isBl

工具类之数据库工具类:DBUtil(采用反射机制)

经常操作数据库的码农们一定知道操作数据库是一项很复杂的工作,它不仅要解决各种乱码的问题还要解决各种数据表的增删改查等的操作. 另外每次操作数据库都要用到数据库连接.执行SQL语句.关闭连接的操作,所以在这里我就把这些功能封装到了一个工具类中,该类使用的是反射机制写成的,也就是说它可以帮助你完成对任何数据表的操作.关键代码如下: 首先是配置文件:config.properties driverName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost

Collections工具类和Arrays工具类

Collections 工具类 Collections类是对集合进行操作的类,他里面没有特有的成员,所有的方法都是静态的. 常用的方法 sort(List L):List集合本身对象不具备比较功能,使用了这个方法以后能够对List集合中的元素进行排序.sort()方法本身要求对象实现了Comparable sort(List<T> l ,Comparator<? super T>)或者你传递一个自定义的比较器也可以. binarySearch(List <T>l,<

xml字符串和java实体类相互转换JaxbXmlUtil工具类 附java实体类生成soap接口报文案例

JaxbXmlUtil工具类 package com.aiait.ivs.util; import java.io.StringReader; import java.io.StringWriter; import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; /** * Jaxb工具类 xml和java类相互转换 * * @author sunj