/**
   * Call this when data is loaded. The UI will perform complete at once or after a delay, depends
   * on the time elapsed is greater then {@link #mLoadingMinTime} or not.
   */
  public final void refreshComplete() {
    if (DEBUG) {
      PtrCLog.i(LOG_TAG, "refreshComplete");
    }

    if (mRefreshCompleteHook != null) {
      mRefreshCompleteHook.reset();
    }

    int delay = (int) (mLoadingMinTime - (System.currentTimeMillis() - mLoadingStartTime));
    if (delay <= 0) {
      if (DEBUG) {
        PtrCLog.d(LOG_TAG, "performRefreshComplete at once");
      }
      performRefreshComplete();
    } else {
      postDelayed(mPerformRefreshCompleteDelay, delay);
      if (DEBUG) {
        PtrCLog.d(LOG_TAG, "performRefreshComplete after delay: %s", delay);
      }
    }
  }
 @Override
 public void run() {
   performRefreshComplete();
 }