Avoid NPE around mReusedTask of ActivityStarter
Symptom: System crash by NPE is observed on ActivityStarter during phone boot-up. Detail and sample: ActivityStarter has possibility to be called itself recursively by calling TaskRecord$performClearTaskLocked(). Then class variable of mReusedTask is initialized to null after the call, because the recursive call isn't guarded by synchronized block. Then NPE crash occurs on next statement. Solutions: Avoid to use the class variable on null possibility statement. Bug: 32361138 Change-Id: Iaea3e066a6f7134fcae4338ff864bb236241194c
This commit is contained in:
committed by
Shunta Sato
parent
1a02a26838
commit
0bd28e2c5f
@@ -1540,9 +1540,9 @@ class ActivityStarter {
|
||||
== (FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TASK)) {
|
||||
// The caller has requested to completely replace any existing task with its new
|
||||
// activity. Well that should not be too hard...
|
||||
intentActivity.task.performClearTaskLocked();
|
||||
intentActivity.task.setIntent(mStartActivity);
|
||||
mReuseTask = intentActivity.task;
|
||||
mReuseTask.performClearTaskLocked();
|
||||
mReuseTask.setIntent(mStartActivity);
|
||||
// When we clear the task - focus will be adjusted, which will bring another task
|
||||
// to top before we launch the activity we need. This will temporary swap their
|
||||
// mTaskToReturnTo values and we don't want to overwrite them accidentally.
|
||||
|
||||
Reference in New Issue
Block a user