StatMachine的transitionTo方法用于状态迁移,代码如下:
//frameworks/base/core/java/com/android/internal/util/StateMachine.java
public class StateMachine {
private SmHandler mSmHandler;
public final void transitionTo(IState destState) {
mSmHandler.transitionTo(destState);
}
}
调用SmHandler的transitionTo方法:
//frameworks/base/core/java/com/android/internal/util/StateMachine.java
public class StateMachine {
private static class SmHandler extends Handler {
private State mDestState;
private boolean mTransitionInProgress = false;
private final void transitionTo(IState destState) {
if (mTransitionInProgress) {
Log.wtf(mSm.mName, "transitionTo called while transition already in progress to " +
mDestState + ", new target state=" + destState);
}
mDestState = (State) destState;
if (mDbg) mSm.log("transitionTo: destState=" + mDestState.getName());
}
}
}
方法中并不是马上执行状态迁移操作,而是对mDestState 进行赋值,将传入的destState赋值给mDestState 变量。