-
“活动内存堆栈管理”
大风起兮云飞扬,风萧萧兮易水寒,闲来无事斗地主,无聊至极!最近工作刚完工,甚是有点风轻云淡之意,很是蛋疼,写写博客解闷。(未完晚上继续写)继续:包 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; } }
也没什么特别之处,就是活动的对象和包类名清除无用的界面,就这么简单。
版权声明:本文为博主原创文章,未经博主允许不得转载。