| /* |
| * Copyright 2018 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.core.os; |
| |
| import android.os.Handler; |
| import android.os.Message; |
| |
| import androidx.annotation.NonNull; |
| import androidx.annotation.Nullable; |
| |
| /** |
| * Helper for accessing features in {@link Handler}. |
| */ |
| public final class HandlerCompat { |
| /** |
| * Causes the Runnable r to be added to the message queue, to be run |
| * after the specified amount of time elapses. |
| * The runnable will be run on the thread to which this handler |
| * is attached. |
| * <b>The time-base is {@link android.os.SystemClock#uptimeMillis}.</b> |
| * Time spent in deep sleep will add an additional delay to execution. |
| * |
| * @param r The Runnable that will be executed. |
| * @param token An instance which can be used to cancel {@code r} via |
| * {@link Handler#removeCallbacksAndMessages}. |
| * @param delayMillis The delay (in milliseconds) until the Runnable |
| * will be executed. |
| * |
| * @return Returns true if the Runnable was successfully placed in to the |
| * message queue. Returns false on failure, usually because the |
| * looper processing the message queue is exiting. Note that a |
| * result of true does not mean the Runnable will be processed -- |
| * if the looper is quit before the delivery time of the message |
| * occurs then the message will be dropped. |
| * |
| * @see Handler#postDelayed(Runnable, Object, long) |
| */ |
| public static boolean postDelayed(@NonNull Handler handler, @NonNull Runnable r, |
| @Nullable Object token, long delayMillis) { |
| if (BuildCompat.isAtLeastP()) { |
| return handler.postDelayed(r, token, delayMillis); |
| } |
| |
| Message message = Message.obtain(handler, r); |
| message.obj = token; |
| return handler.sendMessageDelayed(message, delayMillis); |
| } |
| |
| private HandlerCompat() { |
| } |
| } |