Activity管理

“活动内存堆栈管理”

大风起兮云飞扬,风萧萧兮易水寒,闲来无事斗地主,无聊至极!
最近工作刚完工,甚是有点风轻云淡之意,很是蛋疼,写写博客解闷。(未完晚上继续写)
继续:
 com.xxoo.utils;

导入 android.app.Activity;
导入 android.app.ActivityManager;
import android.content.ComponentName;
import android.content.Context;
导入 android.os.Build;

import java.util.List;
import java.util.Stack;

/ **
 *活动管理类,用于程序页面的销毁和应用退出
 *由IMissYou于2016/4/1创建。
* /
 public class AppManagerUtils {
     // Activitystime
 private static Stack <Activity> activityStack ;
    //单例模式
 private static AppManagerUtils instance ;        

    private AppManagerUtils(){
    }

    / **
      *单一实例
      * /
 public static AppManagerUtils getAppManager(){
         if instance == null){
             instance = new AppManagerUtils();    
        }
        返回实例 ;
    }

    / **
      *添加活动到堆栈
      * /
 public void addActivity(Activity activity){
         if activityStack == null){
             activityStack = new Stack <Activity>();    
        }
        activityStack .add(activity);
    }

    / **
      *获取当前活动(堆栈中最后一个压入的)
      * /
 public Activity currentActivity(){    
        Activity activity = activityStack .lastElement();
        回报活动;
    }

    / **
      *结束当前Activity(堆栈中最后一个压入的)
      * /
 public void finishActivity(){    
        Activity activity = activityStack .lastElement();
        finishActivity(活性);
    }

    / **
      *结束指定的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
      * /
 public void finishNameActivity(String cls){
         for(Activity activity: activityStack){
             if(activity.getClass()。getName()。equals(cls)){    
                finishActivity(活性);
            }
        }
    }
    / **
      *获取指定类名的对象是否纯在
      * @param cls
 * @return
 * /
 public boolean getThisActivity(String cls){
         for(Activity activity: activityStack){
             if(activity.getClass()。getName()。 equals(cls)){
                 return true ;              
            }
        }
        返回假 ;
    }

    / **
      *清除指定类名外的所有对象
      * @param cls
 * /
 public void finishClassActivity(String cls){
         for(Activity activity: activityStack){
             if(!activity.getClass()。getName()。 )){         
                finishActivity(活性);
            }
        }
    }
    / **
      *结束所有活动
      * /
 public void finishAllActivity(){
         for int i = 0 ; i < activityStack .size(); i ++){
             if null!= activityStack .get(i)){
                 activityStack .get我完成();    
            }
        }
        activityStack .clear();
    }

    / **
      *退出应用程序
      * /
 public void AppExit(Context context){
         try {    
            finishAllActivity();
            ActivityManager activityMgr =(ActivityManager)context.getSystemService(Context。ACTIVITY_SERVICE);
            activityMgr.killBackgroundProcesses(context.getPackageName());
            系统。退出0);
            android.os.Process。killProcess(android.os.Process。myPid());
        } catch(Exception e){
            LogUtils。e“APP异常退出”);
        }
        最后 {
            系统。退出0);
            android.os.Process。killProcess(android.os.Process。myPid());
        }
    }

    / **
      *判断app是否后台前台运行
      * @param context
 * @return
 * /
 private boolean isAppIsInBackground(Context context){
         boolean isInBackground = true ;              
        ActivityManager am =(ActivityManager)context.getSystemService(Context。ACTIVITY_SERVICE);
        如果(Build.VERSION。SDK_INT > Build.VERSION_CODES。KITKAT_WATCH){
            列表<ActivityManager.RunningAppProcessInfo> runningProcesses = am.getRunningAppProcesses();
            对于(ActivityManager.RunningAppProcessInfo processInfo:runningProcesses){
                如果(processInfo。重要 == ActivityManager.RunningAppProcessInfo。 IMPORTANCE_FOREGROUND){
                    (字符串activeProcess:processInfo pkgList){
                        如果(activeProcess.equals(context.getPackageName())){
                            isInBackground = false ;
                        }
                    }
                }
            }
        } else {
            list <ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
            ComponentName componentInfo = taskInfo.get(0)。topActivity ;
            if(componentInfo.getPackageName()。equals(context.getPackageName())){
                isInBackground = false ;
            }
        }

        return isInBackground;
    }
}
 
      
	也没什么特别之处,就是活动的对象和包类名清除无用的界面,就这么简单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值