code: public static void render() {
          // If Anvil.render() is called on a non-UI thread, use UI Handler
          if (Looper.myLooper() != Looper.getMainLooper()) {
              synchronized (Anvil.class) {
                  if (anvilUIHandler == null) {
                      anvilUIHandler = new Handler(Looper.getMainLooper());
                  }
              }
              anvilUIHandler.removeCallbacksAndMessages(null);
              anvilUIHandler.post(anvilRenderRunnable);
              return;
          }
          Set<Mount> set = new HashSet<>();
          set.addAll(mounts.values());
          for (Mount m : set) {
              render(m);
          }
      }
docs: Starts the new rendering cycle updating all mounted
  renderables. Update happens in a lazy manner, only the values that has
  been changed since last rendering cycle will be actually updated in the
  views. This method can be called from any thread, so it's safe to use
  {@code Anvil.render()} in background services.