您的位置:首页 > 其它

Flux框架...登陆流程...

2016-07-06 10:41 162 查看
恩...新的项目使用的是 Flux搭建的,最近正在熟悉代码..

看过的并不算是掌握,还是写出来试试吧...

以 账号登陆作为例子...

1.登陆按钮按键监听.获取账号密码,分别进行 正则等系列判断...

创建 账号模块的ActionsCreator...

然后 调用该Action:
ActionsCreator.getInstance().login(LoginActivity.this, mobile, password);


2.ActionsCreator内Action方法的创建.....

public void login(MyBaseActivity activity, String mobile, String password) {
LoginBean bean = new LoginBean();
bean.mobile = mobile;
bean.password = RSAUtils.encryptedCode(activity, password);

activity.addRequest(activity.getService(LoginApiService.class).getLogin(bean),
new BaseCallBack<LoginModel>() {
@Override
public void onSuccess200(LoginModel model) {
mDispatcher.dispatch(new LoginSuccessAction(model));
}
});
}
调用封装好的 BaseActivity内的 addRequest方法,有1个参数,2个参数和4个参数...

恩,使用2个参数.分别是call和callback

call参数,使用retrofit对需要进行联网操作的封装在对应的ApiService类内...

将ActionsCreator传递过来的信息...也就是 账号,密码进行封装,封装在bean里面...

交给retrofit进行联网操作...

返回Simplecall...和返回结果...

callback根据需求调用BaseCallback或者SimpleCallback......

3.返回success后...

调用APP内唯一的  Dispatcher...对整个Action进行调度...

Dispatcher的dispatch方法内调用 EventBus,将该Action发送给所有的订阅者...

4.dispatch发送出去的Action,继承自BaseAction...

该Action内包含retrofit请求成功的结果...

5.在第3步...dispatch将该Action通过EventBus将Action发送给所有订阅者...

对应的创建账号模块的Store...也就是LoginStore

该Store继承自BaseStore,对Dispatcher进行了订阅...

接收到来自 dispatch发送过来的Action..

因为该Action内包含retrofit请求成功后的结果...

在store里面对该结果进行处理...

处理完成后,封装在Event里面,再通过EventBus发送给订阅该store的View,也就是UI

6.从View内将需求通过ActionsCreator传递给Dispatcher...

ActionsCreator内该Action通过retrofit对联网操作进行处理,返回call

然后将call的结果封装成Action通过Dispathcer内的EventBus传递给所有订阅的Store

Store内拿到该Action,对其进行处理,

然后将View需要的结果封装成继承自BaseEvent的event内...

再通过继承自BaseStore,绑定的Dispatcher的方法,EventBus将该event发送给View

最后View拿到event的结果...

走完一个完整的流程...

整个APP对应的:

1个Dispatcher

多个与需求功能模块相对应的ActionsCreator和Store

通过EventBus对数据进行传递

数据传递是单向的

附上Flux官方框架图:





恩,最后不得不说一句,mac真心好用.......
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: