Flux框架...登陆流程...
2016-07-06 10:41
162 查看
恩...新的项目使用的是 Flux搭建的,最近正在熟悉代码..
看过的并不算是掌握,还是写出来试试吧...
以 账号登陆作为例子...
1.登陆按钮按键监听.获取账号密码,分别进行 正则等系列判断...
创建 账号模块的ActionsCreator...
2.ActionsCreator内Action方法的创建.....
恩,使用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真心好用.......
看过的并不算是掌握,还是写出来试试吧...
以 账号登陆作为例子...
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真心好用.......
相关文章推荐
- 根据大神的二维码扫描初体验
- ssm+maven+maven_pojo_generate
- 欢迎使用CSDN-markdown编辑器
- 产品设计-产品交互-人性化-是不是好用
- 根据阈值清理指定路径的文件 linux
- Android studio 2.2Preview4 中出现 Plugin is too old问题
- webstorm取消撤销快捷键
- HDU 1253 胜利大逃亡
- 搬迁至http://www.macode.net/
- Java BufferedWriter BufferedReader 源码分析
- NYOJ1063_生活的烦恼
- Jade基础语法介绍
- python变量不能以数字打头详解
- 批处理删除svn信息:批处理
- curl多线程采集----评论
- Python导入机制-查找模块
- Android Studio编译时路径过长的问题
- HibernateTemplate
- Queue 与 List
- 现代OGL Shader中VAO,VBO和GL_ELEMENT_ARRAY_BUFFER之间的关系