标签:android状态模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述状态(State)模式的:此实例是Android4.4数据连接部分,DataConnecton继承自StateMachine状态机类,StateMachine状态机类实现了State设计模式的应用,在WiFi、蓝牙、数据连接这三种网络连接的管理实现都使用了State设计模式。
图中看出,共定义了7种状态子类,都是DataConnecton的内部类,数据连接在六种状态中转换,DefaultState是作为其他六个子类的父状态类的,所谓父状态类,就是当子状态类无法处理(在processMessage方法中处理)时,就会交给父状态类来处理。状态的转换是通过DataConnecton的transitionTo()方法来设置的。
源代码(代码太多,只贴Context管理State的代码):
private DataConnection(PhoneBase phone, String name, int id,
DcTrackerBase dct, DcTesterFailBringUpAll failBringUpAll,
DcController dcc) {
//[mr2] removed
//setDbg(false);
addState(mDefaultState);
addState(mInactiveState, mDefaultState);//mDefaultState作为父状态
addState(mActivatingState, mDefaultState);
addState(mRetryingState, mDefaultState);
addState(mActiveState, mDefaultState);
addState(mDisconnectingState, mDefaultState);
addState(mDisconnectingErrorCreatingConnection, mDefaultState);
setInitialState(mInactiveState);//设置初始状态
}未完待续,有不对的地方,请指正。
标签:android状态模式
原文地址:http://blog.csdn.net/canghai1129/article/details/41285533