diff options
| -rw-r--r-- | core/java/android/app/servertransaction/TransactionExecutorHelper.java | 12 | ||||
| -rw-r--r-- | core/tests/coretests/src/android/app/servertransaction/TransactionExecutorTests.java | 6 |
2 files changed, 13 insertions, 5 deletions
diff --git a/core/java/android/app/servertransaction/TransactionExecutorHelper.java b/core/java/android/app/servertransaction/TransactionExecutorHelper.java index 6df92a78cc9f..a34be5c3edc7 100644 --- a/core/java/android/app/servertransaction/TransactionExecutorHelper.java +++ b/core/java/android/app/servertransaction/TransactionExecutorHelper.java @@ -75,9 +75,15 @@ public class TransactionExecutorHelper { mLifecycleSequence.clear(); if (finish >= start) { - // just go there - for (int i = start + 1; i <= finish; i++) { - mLifecycleSequence.add(i); + if (start == ON_START && finish == ON_STOP) { + // A case when we from start to stop state soon, we don't need to go + // through the resumed, paused state. + mLifecycleSequence.add(ON_STOP); + } else { + // just go there + for (int i = start + 1; i <= finish; i++) { + mLifecycleSequence.add(i); + } } } else { // finish < start, can't just cycle down if (start == ON_PAUSE && finish == ON_RESUME) { diff --git a/core/tests/coretests/src/android/app/servertransaction/TransactionExecutorTests.java b/core/tests/coretests/src/android/app/servertransaction/TransactionExecutorTests.java index 1410f4f1bf72..09ea1b1865c0 100644 --- a/core/tests/coretests/src/android/app/servertransaction/TransactionExecutorTests.java +++ b/core/tests/coretests/src/android/app/servertransaction/TransactionExecutorTests.java @@ -124,7 +124,7 @@ public class TransactionExecutorTests { assertArrayEquals(new int[] {}, path(ON_START)); assertArrayEquals(new int[] {ON_RESUME}, path(ON_RESUME)); assertArrayEquals(new int[] {ON_RESUME, ON_PAUSE}, path(ON_PAUSE)); - assertArrayEquals(new int[] {ON_RESUME, ON_PAUSE, ON_STOP}, path(ON_STOP)); + assertArrayEquals(new int[] {ON_STOP}, path(ON_STOP)); assertArrayEquals(new int[] {ON_RESUME, ON_PAUSE, ON_STOP, ON_DESTROY}, path(ON_DESTROY)); } @@ -362,7 +362,9 @@ public class TransactionExecutorTests { public void testClosestStateResolutionFromOnStart() { mClientRecord.setState(ON_START); assertEquals(ON_RESUME, mExecutorHelper.getClosestOfStates(mClientRecord, shuffledArray( - new int[] {ON_CREATE, ON_RESUME, ON_PAUSE, ON_STOP, ON_DESTROY}))); + new int[] {ON_CREATE, ON_RESUME, ON_PAUSE, ON_DESTROY}))); + assertEquals(ON_STOP, mExecutorHelper.getClosestOfStates(mClientRecord, shuffledArray( + new int[] {ON_STOP}))); assertEquals(ON_CREATE, mExecutorHelper.getClosestOfStates(mClientRecord, shuffledArray( new int[] {ON_CREATE}))); } |