am ff33b94e: Merge "Cleanup static references when quitting." into ics-mr1

* commit 'ff33b94e236fcde3833fba698d32d0e6b98fa303':
  Cleanup static references when quitting.
This commit is contained in:
Jaikumar Ganesh
2011-11-29 10:07:07 -08:00
committed by Android Git Automerger

View File

@@ -418,7 +418,7 @@ public class StateMachine {
public static final int SM_QUIT_CMD = -1;
/** Message.what value when initializing */
public static final int SM_INIT_CMD = -1;
public static final int SM_INIT_CMD = -2;
/**
* Convenience constant that maybe returned by processMessage
@@ -568,6 +568,13 @@ public class StateMachine {
return mCount;
}
/**
* Clear the list of Processed Message Info.
*/
void cleanup() {
mMessages.clear();
}
/**
* @return the information on a particular record. 0 is the oldest
* record and size()-1 is the newest record. If the index is to
@@ -608,6 +615,7 @@ public class StateMachine {
}
}
private static class SmHandler extends Handler {
/** The debug flag */
@@ -782,15 +790,8 @@ public class StateMachine {
*/
if (destState != null) {
if (destState == mQuittingState) {
/**
* We are quitting so ignore all messages.
*/
mSm.quitting();
if (mSm.mSmThread != null) {
// If we made the thread then quit looper which stops the thread.
getLooper().quit();
mSm.mSmThread = null;
}
cleanupAfterQuitting();
} else if (destState == mHaltingState) {
/**
* Call halting() if we've transitioned to the halting
@@ -802,6 +803,29 @@ public class StateMachine {
}
}
/**
* Cleanup all the static variables and the looper after the SM has been quit.
*/
private final void cleanupAfterQuitting() {
mSm.quitting();
if (mSm.mSmThread != null) {
// If we made the thread then quit looper which stops the thread.
getLooper().quit();
mSm.mSmThread = null;
}
mSm.mSmHandler = null;
mSm = null;
mMsg = null;
mProcessedMessages.cleanup();
mStateStack = null;
mTempStateStack = null;
mStateInfo.clear();
mInitialState = null;
mDestState = null;
mDeferredMessages.clear();
}
/**
* Complete the construction of the state machine.
*/