本文主要是介绍activity堆栈式管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
package com.chinaCEB.cebActivity.utils;import java.util.Stack;import android.app.Activity;
import android.content.Context;/*** activity堆栈式管理** @author FireAnt(http://my.oschina.net/LittleDY)* @created 2014年10月30日 下午6:22:05**/
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();finishActivity(activity);}/*** 结束指定的Activity*/public void finishActivity(Activity activity) {if (activity != null && !activity.isFinishing()) {activityStack.remove(activity);activity.finish();activity = null;}}/*** 结束指定类名的Activity*/public void finishActivity(Class<?> cls) {for (Activity activity : activityStack) {if (activity.getClass().equals(cls)) {finishActivity(activity);break;}}}/*** 结束所有Activity*/public void finishAllActivity() {for (int i = 0, size = activityStack.size(); i < size; i++) {if (null != activityStack.get(i)) {//finishActivity方法中的activity.isFinishing()方法会导致某些activity无法销毁//貌似跳转的时候最后一个activity 是finishing状态,所以没有执行//内部实现不是很清楚,但是实测结果如此,使用下面代码则没有问题// find by TopJohn//finishActivity(activityStack.get(i));activityStack.get(i).finish();//break;}}activityStack.clear();}/*** 获取指定的Activity** @author kymjs*/public static Activity getActivity(Class<?> cls) {if (activityStack != null)for (Activity activity : activityStack) {if (activity.getClass().equals(cls)) {return activity;}}return null;}/*** 退出应用程序*/public void AppExit(Context context) {try {finishAllActivity();// 杀死该应用进程android.os.Process.killProcess(android.os.Process.myPid());System.exit(0);} catch (Exception e) {}}
}
堆栈式管理就是好,我想后退,不用sb的finish了。而且更多的方便。
这篇关于activity堆栈式管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!