android栈管理,Android堆栈管理的类ActivityStackManager

实战项目中管理Activity的类,一般在BaseActivity会调用这个类,然后所有的Activity继承BaseActivity,这样管理好整个项目的Activity。

ed897d567b02

截图取自百度图片

/**

* activity堆栈管理

*/

public class ActivityStackManager {

private static ActivityStackManager mInstance;

private static Stack mActivityStack;

public static ActivityStackManager getInstance() {

if (null == mInstance) {

mInstance = new ActivityStackManager();

}

return mInstance;

}

private ActivityStackManager() {

mActivityStack = new Stack();

}

/**

* 入栈

*

* @param activity

*/

public void addActivity(Activity activity) {

mActivityStack.push(activity);

}

/**

* 出栈

*

* @param activity

*/

public void removeActivity(Activity activity) {

mActivityStack.remove(activity);

}

/**

* 彻底退出

*/

public void finishAllActivity() {

Activity activity;

while (!mActivityStack.empty()) {

activity = mActivityStack.pop();

if (activity != null) {

activity.finish();

}

}

}

/**

* 结束指定类名的Activity

*

* @param cls

*/

public void finishActivity(Class> cls) {

for (Activity activity : mActivityStack) {

if (activity.getClass().equals(cls)) {

finishActivity(activity);

}

}

}

/**

* 查找栈中是否存在指定的activity

*

* @param cls

* @return

*/

public boolean checkActivity(Class> cls) {

for (Activity activity : mActivityStack) {

if (activity.getClass().equals(cls)) {

return true;

}

}

return false;

}

/**

* 结束指定的Activity

*

* @param activity

*/

public void finishActivity(Activity activity) {

if (activity != null) {

mActivityStack.remove(activity);

activity.finish();

activity = null;

}

}

/**

* finish指定的activity之上所有的activity

*

* @param actCls

* @param isIncludeSelf

* @return

*/

public boolean finishToActivity(Class extends Activity> actCls, boolean isIncludeSelf) {

List buf = new ArrayList();

int size = mActivityStack.size();

Activity activity = null;

for (int i = size - 1; i >= 0; i--) {

activity = mActivityStack.get(i);

if (activity.getClass().isAssignableFrom(actCls)) {

for (Activity a : buf) {

a.finish();

}

return true;

} else if (i == size - 1 && isIncludeSelf) {

buf.add(activity);

} else if (i != size - 1) {

buf.add(activity);

}

}

return false;

}}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值