为什么写状态管理?
对于Activity,Fragment里面的数据 做一个统一的管理,处理
实现方法
1、新增一个BaseState的状态管理器,复杂的界面新加一个状态管理,用于管理当前界面的数据处理
/**
* 全局基类管理状态
*
* @author Admin
*/
public abstract class BaseState {
/**
* 进入状态
*/
protected abstract void enterState();
/**
* 退出状态
*/
protected abstract void outState();
}
2、创建一个StateManager,项目的状态管理类,存放在Application中,初始化出项目需要的所有状态管理
public class StateManager {
MyFragmentState myFraState;
LoginState loginState;
RegionState regionState;
/**
* 初始化各个界面的状态管理
*/
public void initState() {
//主界面设备列表的状态管理
myFraState = new MyFragmentState();
//登录状态
loginState = new LoginState();
//片区状态
regionState = new RegionState();
}
public MyFragmentState getMyFraState() {
return myFraState;
}
public LoginState getLoginState() {
return loginState;
}
public RegionState getRegionState() {
return regionState;
}
}
在Application 中初始化,并对所有状态管理进行初始化
public class MyApplication extends Application {
/**
* 状态管理
*/
StateManager stateManager;
@Override
public void onCreate() {
super.onCreate();
//状态管理初始化
stateManager = new StateManager();
stateManager.initState();
}
}
3、对于一个Activity,新增一个State状态管理类(例子:登录界面)
新增一个LoginState 对于LoginActivity做数据状态管理,管理用户的登录信息
public class LoginState extends BaseState {
/**
* 个人信息
*/
static LoginModel loginModel = null;
@Override
protected void enterState() {
loginModel = new LoginModel();
}
@Override
protected void outState() {
}
public LoginModel getLoginModel() {
return loginModel;
}
public void setLoginModel(LoginModel model) {
loginModel = model;
}
public Long getSessionId() {
return loginModel.getSessionId();
}
}
在LoginActivity中得到Application中的实例
//状态实例
LoginState loginState;
@Override
protected void initView() {
//得到登录状态管理
loginState = MyApplication.getApplication().getStateManager().getLoginState();
loginState.enterState();
}
@Override
protected void onDestroy() {
super.onDestroy();
loginState.outState();
}
之后就可以在LoginActivity中对于该实例进行自己的操作了