Ignore instead of throw errors in QuittingState and reorder some parameters.
Since there could be an arbitrary number of messages in
the queue but Handler/Looper/MessageQueue do not provide
any mechanism for removing "all" messages the best we can
do is ignore. Throwing an error is probably too heavy.
Change-Id: I13c81ac5786484f5b3218885b010de596d943975
diff --git a/core/java/com/android/internal/util/HierarchicalStateMachine.java b/core/java/com/android/internal/util/HierarchicalStateMachine.java
index 1289d36..bebf051 100644
--- a/core/java/com/android/internal/util/HierarchicalStateMachine.java
+++ b/core/java/com/android/internal/util/HierarchicalStateMachine.java
@@ -550,7 +550,8 @@
private class QuittingState extends HierarchicalState {
@Override
public boolean processMessage(Message msg) {
- throw new RuntimeException("QuitingState: processMessage called should not happen");
+ // Ignore
+ return false;
}
}
@@ -960,7 +961,7 @@
* @param looper for this state machine
* @param name of the state machine
*/
- private void initStateMachine(Looper looper, String name) {
+ private void initStateMachine(String name, Looper looper) {
mName = name;
mHsmHandler = new HsmHandler(looper, this);
}
@@ -975,7 +976,7 @@
mHsmThread.start();
Looper looper = mHsmThread.getLooper();
- initStateMachine(looper, name);
+ initStateMachine(name, looper);
}
/**
@@ -983,8 +984,8 @@
*
* @param name of the state machine
*/
- protected HierarchicalStateMachine(Looper looper, String name) {
- initStateMachine(looper, name);
+ protected HierarchicalStateMachine(String name, Looper looper) {
+ initStateMachine(name, looper);
}
/**
diff --git a/core/tests/coretests/src/android/os/HierarchicalStateMachineTest.java b/core/tests/coretests/src/android/os/HierarchicalStateMachineTest.java
index 3f4bc04..20c55c2 100644
--- a/core/tests/coretests/src/android/os/HierarchicalStateMachineTest.java
+++ b/core/tests/coretests/src/android/os/HierarchicalStateMachineTest.java
@@ -1204,8 +1204,8 @@
* complete.
*/
class StateMachineSharedThread extends HierarchicalStateMachine {
- StateMachineSharedThread(Looper looper, String name, int maxCount) {
- super(looper, name);
+ StateMachineSharedThread(String name, Looper looper, int maxCount) {
+ super(name, looper);
mMaxCount = maxCount;
setDbg(DBG);
@@ -1254,7 +1254,7 @@
// Create the state machines
StateMachineSharedThread sms[] = new StateMachineSharedThread[10];
for (int i = 0; i < sms.length; i++) {
- sms[i] = new StateMachineSharedThread(smThread.getLooper(), "sm", sms.length);
+ sms[i] = new StateMachineSharedThread("sm", smThread.getLooper(), sms.length);
sms[i].start();
}