public final class

ThreadUtils

extends java.lang.Object

 java.lang.Object

↳androidx.car.app.utils.ThreadUtils

Gradle dependencies

compile group: 'androidx.car.app', name: 'app', version: '1.2.0-rc01'

  • groupId: androidx.car.app
  • artifactId: app
  • version: 1.2.0-rc01

Artifact androidx.car.app:app:1.2.0-rc01 it located at Google repository (https://maven.google.com/)

Overview

Utility functions to handle running functions on the main thread.

Summary

Methods
public static voidcheckMainThread()

Checks that currently running on the main thread.

public static voidrunOnMain(java.lang.Runnable action)

Executes the action on the main thread.

from java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Methods

public static void runOnMain(java.lang.Runnable action)

Executes the action on the main thread.

public static void checkMainThread()

Checks that currently running on the main thread.

Source

/*
 * Copyright 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package androidx.car.app.utils;

import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP;

import android.os.Handler;
import android.os.Looper;

import androidx.annotation.NonNull;
import androidx.annotation.RestrictTo;

/**
 * Utility functions to handle running functions on the main thread.
 *
 * @hide
 */
@RestrictTo(LIBRARY_GROUP)
public final class ThreadUtils {
    private static final Handler HANDLER = new Handler(Looper.getMainLooper());

    /** Executes the {@code action} on the main thread. */
    public static void runOnMain(@NonNull Runnable action) {
        if (Looper.getMainLooper() == Looper.myLooper()) {
            action.run();
        } else {
            HANDLER.post(action);
        }
    }

    /**
     * Checks that currently running on the main thread.
     *
     * @throws IllegalStateException if the current thread is not the main thread
     */
    public static void checkMainThread() {
        if (Looper.getMainLooper() != Looper.myLooper()) {
            throw new IllegalStateException("Not running on main thread when it is required to");
        }
    }

    private ThreadUtils() {
    }
}