code: public static <T> T onUiSync(Func<T> func, long waitMillis, boolean cancelOnTimeOut) {
          return onUiSync(func, waitMillis, 0, cancelOnTimeOut);
      }
docs: Synchronously
  <p/>
  In this you can receiver {@link Func#call()} return
  <p/>
  The current thread relative thread synchronization operation,
  blocking the current thread,
  thread for the main thread to complete
  But the current thread just wait for the waitTime long.
  
  @param func            Func Interface
  @param waitMillis      wait for the main thread run milliseconds Time
  @param cancelOnTimeOut on timeout the current thread cancel the runnable task
  @param <T>             you can set any type to return
  @return {@link T}