OSDN Git Service

Ignore activity lifecycle requests without matching client records.
authorBryce Lee <brycelee@google.com>
Fri, 9 Mar 2018 19:02:10 +0000 (11:02 -0800)
committerBryce Lee <brycelee@google.com>
Tue, 13 Mar 2018 14:52:35 +0000 (14:52 +0000)
commitc940660bd5d9e68069d721d92d8e0534e964d4b3
treee6ac7f4f3ae676d0f6cc5660aa9cc65ff9bcba2d
parenta8cb58721ce820a17e07a439db010a1eeeecba7e
Ignore activity lifecycle requests without matching client records.

Previously, changes were made to finish destroyed activities. This
prevented the code sending lifecycle requests to a non-existent
client record. However, there are scenarios where an activity can
be destroyed without being finished. Finishing these activities will
lead to side effects, such as the activity not being in history and
therefore not restored when navigated back to.

This changelist unlinks finishing from setting an activity's state to
destroyed. For now, we will suppress lifecycle requests client side
without matching records.

Fixes: 74403650
Fixes: 74409828
Bug: 71506345
Test: enable don't keep activities. navigate back and forth
Test: atest CtsActivityManagerDeviceTestCases:ActivityLifecycleTests#testRestoreFromKill
Test: atest CtsActivityManagerDeviceTestCases:ActivityLifecycleTests#testPausedWhenRecreatedFromInNonFocusedStack
Change-Id: I1b76a4758c3be27dc30ecac5ee56949a5b173754
core/java/android/app/servertransaction/TransactionExecutor.java
services/core/java/com/android/server/am/ActivityRecord.java
services/core/java/com/android/server/am/ActivityStack.java
services/tests/servicestests/src/com/android/server/am/ActivityRecordTests.java
services/tests/servicestests/src/com/android/server/am/ActivityStackTests.java