| // Copyright 2013 The Flutter Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| package io.flutter.util; | |
| import android.os.Build; | |
| import android.os.Handler; | |
| import android.os.Looper; | |
| /** Compatability wrapper over {@link Handler}. */ | |
| public final class HandlerCompat { | |
| /** | |
| * Create a new Handler whose posted messages and runnables are not subject to synchronization | |
| * barriers such as display vsync. | |
| * | |
| * <p>Messages sent to an async handler are guaranteed to be ordered with respect to one another, | |
| * but not necessarily with respect to messages from other Handlers. Compatibility behavior: | |
| * | |
| * <ul> | |
| * <li>SDK 28 and above, this method matches platform behavior. | |
| * <li>Otherwise, returns a synchronous handler instance. | |
| * </ul> | |
| * | |
| * @param looper the Looper that the new Handler should be bound to | |
| * @return a new async Handler instance | |
| * @see Handler#createAsync(Looper) | |
| */ | |
| public static Handler createAsyncHandler(Looper looper) { | |
| if (Build.VERSION.SDK_INT >= 28) { | |
| return Handler.createAsync(looper); | |
| } | |
| return new Handler(looper); | |
| } | |
| } |