/* * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ package com.facebook.common.executors; import java.util.concurrent.ExecutorService; import android.os.Handler; import android.os.Looper; /** * An {@link ExecutorService} that is backed by the application's main looper. * * <p/> If the execute is called from the thread of the application's main looper, * it will be executed synchronously. */ public class UiThreadImmediateExecutorService extends HandlerExecutorServiceImpl { private static UiThreadImmediateExecutorService sInstance = null; private UiThreadImmediateExecutorService() { super(new Handler(Looper.getMainLooper())); } public static UiThreadImmediateExecutorService getInstance() { if (sInstance == null) { sInstance = new UiThreadImmediateExecutorService(); } return sInstance; } @Override public void execute(Runnable command) { if (isHandlerThread()) { command.run(); } else { super.execute(command); } } }