code: public static Result onBackground(Action action) {
          final HandlerPoster poster = getBackgroundPoster();
          if (Looper.myLooper() == poster.getLooper()) {
              action.call();
              return new ActionAsyncTask(action, true);
          }
          ActionAsyncTask task = new ActionAsyncTask(action);
          poster.async(task);
          return task;
      }
docs: Asynchronously
  The current thread asynchronous run relative to the sub thread,
  not blocking the current thread
  
  @param action Action Interface, you can do something in this