EventBus中的享元模式

2018-11-04  本文已影响0人  石器时代小古董

减少对象的创建频率
1.首先准备一个对象池缓存对象
2.如果缓存中存在对象

private static final int POOL_SIZE = 4;
  private static final FindState[] FIND_STATE_POOL = new FindState[POOL_SIZE];
   //取出数据对象
    private  FindState prepareFindState() {
        synchronized (FIND_STATE_POOL) {
            for (int i = 0; i < POOL_SIZE; i++) {
                FindState state = FIND_STATE_POOL[i];
                if (state != null) {
                    FIND_STATE_POOL[i] = null;
                    return state;
                }
            }
        }
        return new FindState();
    }
private List<SubscriberMethod> getMethodsAndRelease(FindState findState) {
        List<SubscriberMethod> subscriberMethods = new ArrayList<>(findState.subscriberMethods);
        findState.recycle();
      //准备数据对象
        synchronized (FIND_STATE_POOL) {
            for (int i = 0; i < POOL_SIZE; i++) {
                if (FIND_STATE_POOL[i] == null) {
                    FIND_STATE_POOL[i] = findState;
                    break;
                }
            }
        }
        return subscriberMethods;
    }

   FindState findState = prepareFindState();
上一篇 下一篇

猜你喜欢

热点阅读