private boolean attemptOnReady() {
    if (isReady() && !mHasRunOnReady) {
      mHasRunOnReady = true;
      if (mScrollScaleState != null) {
        scrollToAndCenter(mScrollScaleState.scrollPositionX, mScrollScaleState.scrollPositionY);
        setScale(mScrollScaleState.scale);
      }
      determineCurrentDetail();
      updateViewportAndComputeTiles();
      for (ReadyListener readyListener : mReadyListeners) {
        readyListener.onReady(this);
      }
      return true;
    }
    return false;
  }
@return True if the single ready pass executes, false otherwise (either because not ready, or already run)
tileview/src/main/java/com/moagrius/tileview/TileView.java