Activity解析(四)-创建一个公共的activity

直接上代码,在开发中可以直接使用这个。
首先我创建了一个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();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值