直接上代码,在开发中可以直接使用这个。
首先我创建了一个Activity的管理类
/**
* Created by 杨阳洋 on 2016/12/9.
* 提供当前应用中所有创建的Activity的管理器 (单例:饿汉式 , 懒汉式)
* 涉及到activity的添加、删除指定、删除当前、删除所有、返回栈大小的方法
*/
public class ActivityCollector {
private ActivityCollector(){}
private static ActivityCollector instance = new ActivityCollector();
public static ActivityCollector getInstance(){
return instance;
}
//提供操作activity的容器:Stack
private Stack<Activity> mActivityStacks = new Stack<>();
//activity的添加
public void add(Activity activity){
if(activity != null) {
mActivityStacks.push(activity);
}
}
//删除指定的activity
public void remove(Activity activity){
for (int i = mActivityStacks.size() - 1; i >= 0 ; i--){
if(activity != null && activity.getClass().equals(mActivityStacks.get(i).getClass())) {
activity.finish();
mActivityStacks.remove(i);
}
}
}
//删除当前activity(栈顶的activity)
public void removeTop(){
mActivityStacks.lastElement().finish();
mActivityStacks.remove(mActivityStacks.lastElement());
}
//删除所有的activity
public void removeAll(){
for (int i = mActivityStacks.size() - 1 ; i >= 0 ; i--){
mActivityStacks.get(i).finish();
mActivityStacks.remove(i);
}
}
//返回栈的大小
public int geetSize(){
return mActivityStacks.size();
}
}
接下来就是应用
/**
* Created by 杨阳洋 on 2016/12/9.
*/
public abstract class BaseActivity extends FragmentActivity {
private static final String TAG = "BaseActivity";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.e(TAG, getClass().getSimpleName());//获取当前活动信息
setContentView(getRlayoutId());
ButterKnife.bind(this);
ActivityCollector.getInstance().add(this);//添加Activity到自定义栈中
initData();
}
//初始化内容资源
abstract void initData();
//布局文件
abstract int getRlayoutId();
/**
* 销毁当前Activity
*/
public void removeCurrentActivity(){
ActivityCollector.getInstance().remove(this);
}
/**
* 启动新的Activity
* @param activity
* @param bundle
*/
public void goToActivity(Class activity,Bundle bundle){
Intent intent = new Intent(this, activity);
if(bundle != null && bundle.size() != 0) {
intent.putExtra("data",bundle);
}
}
/**
* 销毁所有的Activity
*/
public void removeAll(){
ActivityCollector.getInstance().removeAll();
}
}