Activity管理
来源:互联网 发布:博途软件下载 编辑:程序博客网 时间:2024/06/05 14:35
/** * 管理所有Activity 当启动一个Activity时,就将其保存到Stack中, 退出时,从Stack中删除 * * @version v1.0 * @date 2013-7-30 */public class ActivityManager{ /** * 保存所有Activity */ private volatile Stack<Activity> activityStack = new Stack<Activity>(); private static volatile ActivityManager instance; private ActivityManager() { } /** * 创建单例类,提供静态方法调用 * * @return ActivityManager */ public static ActivityManager getInstance() { if (instance == null) { instance = new ActivityManager(); } return instance; } /** * 退出Activity * * @param activity Activity */ public void popActivity(Activity activity) { if (activity != null) { LogN.d(this, "popActivity: " + activity.getLocalClassName()); activityStack.remove(activity); } } /** * 获得当前栈顶的Activity * * @return Activity Activity */ public Activity currentActivity() { Activity activity = null; if (!activityStack.empty()) { activity = activityStack.lastElement(); } return activity; } /** * 将当前Activity推入栈中 * * @param activity Activity */ public void pushActivity(Activity activity) { LogN.d(this, "pushActivity: " + activity.getLocalClassName()); activityStack.add(activity); } /** * 退出栈中其他所有Activity * * @param cls Class 类名 */ @SuppressWarnings("rawtypes") public void popOtherActivity(Class cls) { if(null == cls) { LogN.e(this, "cls is null"); return; } for(Activity activity : activityStack) { if (null == activity || activity.getClass().equals(cls)) { continue; } activity.finish(); } LogN.d(this, "activity num is : " + activityStack.size()); } /** * 退出栈中所有Activity * */ public void popAllActivity() { while (true) { Activity activity = currentActivity(); if (activity == null) { break; } activity.finish(); popActivity(activity); } LogN.d(this, "activity num is : " + activityStack.size()); } public void startNextActivity(Class<?> activity) { Activity curActivity = currentActivity(); Intent intent = new Intent(curActivity, activity); curActivity.startActivity(intent); curActivity.overridePendingTransition(R.anim.push_right_in, R.anim.push_left_out); }}