From 6bb881fb456bd2bee6a11a7f11d6e636c96c2d3f Mon Sep 17 00:00:00 2001 From: John Reck Date: Mon, 1 Apr 2019 16:28:23 -0700 Subject: [PATCH] Fix NPE in RNA#callOnFinished Fixes: 129024198 Test: guess Change-Id: I1c073c8bada086376fa849946b949225c5d1d977 --- core/java/android/view/RenderNodeAnimator.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/core/java/android/view/RenderNodeAnimator.java b/core/java/android/view/RenderNodeAnimator.java index 7ab9534941c7d..04ac92292740b 100644 --- a/core/java/android/view/RenderNodeAnimator.java +++ b/core/java/android/view/RenderNodeAnimator.java @@ -26,6 +26,7 @@ import android.graphics.RecordingCanvas; import android.graphics.RenderNode; import android.os.Build; import android.os.Handler; +import android.os.Looper; import android.util.SparseIntArray; import com.android.internal.util.VirtualRefBasePtr; @@ -191,6 +192,9 @@ public class RenderNodeAnimator extends Animator { } mState = STATE_DELAYED; + if (mHandler == null) { + mHandler = new Handler(true); + } applyInterpolator(); if (mNativePtr == null) { @@ -224,9 +228,6 @@ public class RenderNodeAnimator extends Animator { private void moveToRunningState() { mState = STATE_RUNNING; if (mNativePtr != null) { - if (mHandler == null) { - mHandler = new Handler(); - } nStart(mNativePtr.get()); } notifyStartListeners(); @@ -503,7 +504,11 @@ public class RenderNodeAnimator extends Animator { // Called by native @UnsupportedAppUsage private static void callOnFinished(RenderNodeAnimator animator) { - animator.mHandler.post(animator::onFinished); + if (animator.mHandler != null) { + animator.mHandler.post(animator::onFinished); + } else { + new Handler(Looper.getMainLooper(), null, true).post(animator::onFinished); + } } @Override