@Nullable
  public synchronized RequestListener getRequestListener() {
    RequestListener imageOriginRequestListener = null;
    if (mImageOriginListener != null) {
      imageOriginRequestListener = new ImageOriginRequestListener(getId(), mImageOriginListener);
    }
    if (mRequestListeners != null) {
      ForwardingRequestListener requestListener = new ForwardingRequestListener(mRequestListeners);
      if (imageOriginRequestListener != null) {
        requestListener.addRequestListener(imageOriginRequestListener);
      }
      return requestListener;
    }
    return imageOriginRequestListener;
  }
Initializes this controller with the new data source supplier, id and caller context. This
allows for reusing of the existing controller instead of instantiating a new one. This method
should be called when the controller is in detached state.

@param dataSourceSupplier data source supplier
@param id unique id for this controller
@param callerContext tag and context for this controller
drawee-backends/drawee-pipeline/src/main/java/com/facebook/drawee/backends/pipeline/PipelineDraweeController.java