Tag: 自己的第一篇博客
目的:把开发中遇到的问题记录下来
愿景:帮助更多的开发者解决问题
问题引入
做项目的时候遇到一个需求:将某个Activity之前的所有Activity关闭,中间存在多个其他Activity
解决问题
创建ActivityManager
public class ActivityManager {
private static List<BaseActivity> activityStack = new ArrayList<>(); //此处也可用栈结构替代List
public static void addActivity(BaseActivity activity) {
activityStack.add(0, activity);
}
public static void removeActivity(BaseActivity activity) {
activityStack.remove(activity);
}
/**
* 删除指定类名的Activity之前的activity,传入Activity的class
*/
public static boolean finishBeforeActivity(Class<?> cls) {
for (int i = 0; i <activityStack.size(); i++) {
if (!activityStack.get(i).getClass().equals(cls)) {
activityStack.get(i).finish();
} else {
break;
}
}
return true;
}
}
创建BaseActivity
public class BaseActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActivityManager.addActivity(this); } @Override protected void onDestroy() { super.onDestroy(); ActivityManager.removeActivity(this); } }
在需要关闭Activity的地方调用ActivityManager中的finishBeforeActivity()方法
ActivityManager.finishBeforeActivity(XXXActivity.class);
总结
解决该问题的核心是要讲所有的Activity实例用自己定义的数据结构管理起来