code: private void batchResponse(String cacheKey, BatchedImageRequest request) {
          batchedResponses.put(cacheKey, request);
          // If we don't already have a batch delivery runnable in flight, make a new one.
          // Note that this will be used to deliver responses to all callers in batchedResponses.
          if (runnable == null) {
              runnable = new Runnable() {
                  @Override
                  public void run() {
                      for (BatchedImageRequest bir : batchedResponses.values()) {
                          for (ImageContainer container : bir.mContainers) {
                              // If one of the callers in the batched request canceled the request
                              // after the response was received but before it was delivered,
                              // skip them.
                              if (container.mListener == null) {
                                  continue;
                              }
                              if (bir.getError() == null) {
                                  container.mBitmap = bir.mResponseBitmap;
                                  container.mListener.onResponse(container, false);
                              } else {
                                  container.mListener.onError(bir.getError());
                              }
                          }
                      }
                      batchedResponses.clear();
                      runnable = null;
                  }
  
              };
              // Post the runnable.
              handler.postDelayed(runnable, batchResponseDelayMs);
          }
      }
docs: Starts the runnable for batched delivery of responses if it is not already started.
  @param cacheKey The cacheKey of the response being delivered.
  @param request The BatchedImageRequest to be delivered.