zoukankan      html  css  js  c++  java
  • Android完全退出程序、线程

    1、先添加权限

    <uses-permission android:name="android.permission.RESTART_PACKAGES" />

    2、添加Activity管理类

    package net.oschina.app;
    
    import java.util.Stack;
    
    import android.app.Activity;
    import android.app.ActivityManager;
    import android.content.Context;
    
    /**
     * 应用程序Activity管理类
     * @author  liux
     */
    public class AppManager {
        
        private static Stack<Activity> activityStack;
        private static AppManager instance;
        
        private AppManager(){}
        /**
         * 单一实例
         */
        public static AppManager getAppManager(){
            if(instance==null){
                instance=new AppManager();
            }
            return instance;
        }
        /**
         * 添加Activity到堆栈
         */
        public void addActivity(Activity activity){
            if(activityStack==null){
                activityStack=new Stack<Activity>();
            }
            activityStack.add(activity);
        }
        /**
         * 获取当前Activity(堆栈中最后一个压入的)
         */
        public Activity currentActivity(){
            Activity activity=activityStack.lastElement();
            return activity;
        }
        /**
         * 结束当前Activity(堆栈中最后一个压入的)
         */
        public void finishActivity(){
            Activity activity=activityStack.lastElement();
            if(activity!=null){
                activity.finish();
                activity=null;
            }
        }
        /**
         * 结束指定的Activity
         */
        public void finishActivity(Activity activity){
            if(activity!=null){
                activityStack.remove(activity);
                activity.finish();
                activity=null;
            }
        }
        /**
         * 结束指定类名的Activity
         */
        public void finishActivity(Class<?> cls){
            for (Activity activity : activityStack) {
                if(activity.getClass().equals(cls) ){
                    finishActivity(activity);
                }
            }
        }
        /**
         * 结束所有Activity
         */
        public void finishAllActivity(){
            for (int i = 0, size = activityStack.size(); i < size; i++){
                if (null != activityStack.get(i)){
                    activityStack.get(i).finish();
                }
            }
            activityStack.clear();
        }
        /**
         * 退出应用程序
         */
        public void AppExit(Context context) {
            try {
                finishAllActivity();
                ActivityManager activityMgr= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
                activityMgr.restartPackage(context.getPackageName());
                System.exit(0);
            } catch (Exception e) {    }
        }
    }

    3、使用AppManager类

    1)当Activity启动时,在onCreate中添加:AppManager.getAppManager().addActivity(this);

    2)当要退出Activity时,使用:AppManager.getAppManager().AppExit(this);
      

  • 相关阅读:
    mahout 实现canopy
    map-reduce入门
    BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第1章节--SharePoint 2013 介绍 SharePoint 2013 平台
    csu 1030: 素数槽
    ubuntu14.04上搭建android开发环境
    8 Reasons why SharePoint is Bad for Your Business 8个理由告诉你,为什么SharePoint对你的业务有害
    UVA
    【c++版数据结构】之循环单链表的实现(带头结点以及尾节点)
    HDU 1166 敌兵布阵 (树状数组)
    SQL注入式攻击
  • 原文地址:https://www.cnblogs.com/tianguook/p/3404041.html
Copyright © 2011-2022 走看看