您的位置:首页 > 移动开发 > Android开发

Android中使用Stack对Activity的管理

2016-07-15 19:03 435 查看
由于在实际的工作中可能存在这样的情况:有4个页面A-->B-->C-->D在跳到D页面的时候按back想要的结果是直接到A界面去,当然这样的情况很少但是也不是没可能,于是可以用下面的类来实现对activity的管理;当然不是上面的情况向通过下面的类来正常的管理自己app中activity也是很合适的,避免anr很有好处;

代码如下:

package com.buka.sdk.stack;

import android.support.v4.app.FragmentActivity;

import java.util.Stack;

/**
* Created by gxo on 2016/7/15.
*/
public class StackManager {

private static Stack<FragmentActivity> mStack;
private static StackManager instance;

private StackManager(){

}
public static StackManager getInstance() {
if (instance == null) {
instance = new StackManager();
}
return instance;
}

/**加入stack中
* */
public void pushActivityToStack(FragmentActivity activity){
if (mStack == null){
mStack = new Stack<FragmentActivity>();
}
mStack.push(activity);
}

public FragmentActivity currentActivity(){
FragmentActivity fragmentActivity = mStack.lastElement();
return fragmentActivity;
}

/**删除stack顶上的
* */
public void popActivity(){
FragmentActivity activity = mStack.lastElement();
if (activity != null){
activity.finish();
activity = null;
}
}

/**删除某个
* */
public void removeActivity(FragmentActivity activity){
if (activity != null){
activity.finish();
mStack.remove(activity);
activity = null;
}
}

/**删除全部除了传入的这个类
* */
public void removeActivityExceptOne(Class cls){
while (true){
FragmentActivity activity = currentActivity();
if (activity == null){
break;
}
if (activity.getClass().equals(cls)){
break;
}
removeActivity(activity);
}
}

public void popAll(){
while (!mStack.empty()){
mStack.pop().finish();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: