为了不会在我们应用中创建很多个EventBus实例,我们可以创建EventBus的工厂类:getDefault()获得的是单例对象,build()每次会创建一个实例,然后用注解标注我们所要创建EventBus对象的方式。

public class EventBusFactory {
    private static SparseArray mBusSparseArray = new SparseArray<>(2);

    @IntDef({CREATE, START})
    @Retention(RetentionPolicy.SOURCE)
    public @interface BusType {
    }

    public static final int CREATE = 0;
    public static final int START = 1;

    static {
        mBusSparseArray.put(CREATE, EventBus.builder().build());
        mBusSparseArray.put(START, EventBus.getDefault());
    }

    public static EventBus getBus() {
        return getBus(START);
    }

    public static EventBus getBus(@BusType int type) {
        return mBusSparseArray.get(type);
    }

}

SparseArray的使用可以进一步提高性能


注意:本文归作者所有,未经作者允许,不得转载

初语 卫衣 第二件半价