Fix potential NPE when ActivityClientRecord is null
From user bugreport and base on Android R code 12-02 11:52:09.533 10148 2525 2525 E AndroidRuntime: FATAL EXCEPTION: main 12-02 11:52:09.533 10148 2525 2525 E AndroidRuntime: Process: com.kuaishou.nebula, PID: 2525 12-02 11:52:09.533 10148 2525 2525 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.app.ActivityThread$ActivityClientRecord.getLifecycleState()' on a null object> 12-02 11:52:09.533 10148 2525 2525 E AndroidRuntime: at android.app.servertransaction.TransactionExecutorHelper.getClosestOfStates(TransactionExecutorHelper.java:166) 12-02 11:52:09.533 10148 2525 2525 E AndroidRuntime: at android.app.servertransaction.TransactionExecutorHelper.getClosestPreExecutionState(TransactionExecutorHelper.java:144) 12-02 11:52:09.533 10148 2525 2525 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:129) 12-02 11:52:09.533 10148 2525 2525 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 12-02 11:52:09.533 10148 2525 2525 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2105) Bug: 262605168 Test: NA Change-Id: I9613ddd569d6b3d0617b401c73a4f5b92cd95e2e Signed-off-by: lihaizhou <lihaizhou@coolpad.com>
This commit is contained in:
@@ -31,6 +31,7 @@ import android.app.ActivityThread.ActivityClientRecord;
|
||||
import android.app.ClientTransactionHandler;
|
||||
import android.os.IBinder;
|
||||
import android.util.IntArray;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
|
||||
@@ -43,6 +44,7 @@ import java.util.List;
|
||||
* @hide
|
||||
*/
|
||||
public class TransactionExecutorHelper {
|
||||
private static final String TAG = TransactionExecutorHelper.class.getSimpleName();
|
||||
// A penalty applied to path with destruction when looking for the shortest one.
|
||||
private static final int DESTRUCTION_PENALTY = 10;
|
||||
|
||||
@@ -162,6 +164,11 @@ public class TransactionExecutorHelper {
|
||||
if (finalStates == null || finalStates.length == 0) {
|
||||
return UNDEFINED;
|
||||
}
|
||||
if (r == null) {
|
||||
// Early return because the ActivityClientRecord hasn't been created or cannot be found.
|
||||
Log.w(TAG, "ActivityClientRecord was null");
|
||||
return UNDEFINED;
|
||||
}
|
||||
|
||||
final int currentState = r.getLifecycleState();
|
||||
int closestState = UNDEFINED;
|
||||
|
||||
Reference in New Issue
Block a user