Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 952dd95b authored by Charles Munger's avatar Charles Munger Committed by android-build-merger
Browse files

Merge "Deprecate implicit Handler constructors" am: 560c3ebe

am: 080ddd5d

Change-Id: I26b31ede3abd2e2f2eb9747139861179d7e8e669
parents 3e0f0920 080ddd5d
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -34548,8 +34548,8 @@ package android.os {
  }
  public class Handler {
    ctor public Handler();
    ctor public Handler(@Nullable android.os.Handler.Callback);
    ctor @Deprecated public Handler();
    ctor @Deprecated public Handler(@Nullable android.os.Handler.Callback);
    ctor public Handler(@NonNull android.os.Looper);
    ctor public Handler(@NonNull android.os.Looper, @Nullable android.os.Handler.Callback);
    method @NonNull public static android.os.Handler createAsync(@NonNull android.os.Looper);
+27 −7
Original line number Diff line number Diff line
@@ -28,10 +28,9 @@ import java.lang.reflect.Modifier;
 * A Handler allows you to send and process {@link Message} and Runnable
 * objects associated with a thread's {@link MessageQueue}.  Each Handler
 * instance is associated with a single thread and that thread's message
 * queue.  When you create a new Handler, it is bound to the thread /
 * message queue of the thread that is creating it -- from that point on,
 * it will deliver messages and runnables to that message queue and execute
 * them as they come out of the message queue.
 * queue. When you create a new Handler it is bound to a {@link Looper}.
 * It will deliver messages and runnables to that Looper's message
 * queue and execute them on that Looper's thread.
 *
 * <p>There are two main uses for a Handler: (1) to schedule messages and
 * runnables to be executed at some point in the future; and (2) to enqueue
@@ -114,7 +113,18 @@ public class Handler {
     *
     * If this thread does not have a looper, this handler won't be able to receive messages
     * so an exception is thrown.
     *
     * @deprecated Implicitly choosing a Looper during Handler construction can lead to bugs
     *   where operations are silently lost (if the Handler is not expecting new tasks and quits),
     *   crashes (if a handler is sometimes created on a thread without a Looper active), or race
     *   conditions, where the thread a handler is associated with is not what the author
     *   anticipated. Instead, use an {@link java.util.concurrent.Executor} or specify the Looper
     *   explicitly, using {@link Looper#getMainLooper}, {link android.view.View#getHandler}, or
     *   similar. If the implicit thread local behavior is required for compatibility, use
     *   {@code new Handler(Looper.myLooper())} to make it clear to readers.
     *
     */
    @Deprecated
    public Handler() {
        this(null, false);
    }
@@ -128,7 +138,17 @@ public class Handler {
     * so an exception is thrown.
     *
     * @param callback The callback interface in which to handle messages, or null.
     *
     * @deprecated Implicitly choosing a Looper during Handler construction can lead to bugs
     *   where operations are silently lost (if the Handler is not expecting new tasks and quits),
     *   crashes (if a handler is sometimes created on a thread without a Looper active), or race
     *   conditions, where the thread a handler is associated with is not what the author
     *   anticipated. Instead, use an {@link java.util.concurrent.Executor} or specify the Looper
     *   explicitly, using {@link Looper#getMainLooper}, {link android.view.View#getHandler}, or
     *   similar. If the implicit thread local behavior is required for compatibility, use
     *   {@code new Handler(Looper.myLooper(), callback)} to make it clear to readers.
     */
    @Deprecated
    public Handler(@Nullable Callback callback) {
        this(callback, false);
    }