File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ ![ https://github.com/LittleLollipop/androidMVT/blob/master/Design/StateMachine.png ] ( https://github.com/LittleLollipop/androidMVT/blob/master/Design/StateMachine.png )
2+
3+ 此库当中的状态机仅提供运行机制,状态完全由子类制定。
4+
5+ 为保证状态机内行为有序,核心逻辑运行于独立线程中。
6+
7+ 调用changeState方法即可触发状态迁移,状态迁移有三个步骤,check change,state in, state leave,三个方法调用依次执行于状态机内部线程中。
8+
9+ + check change 会传入试图进行迁移的新状态以及当前所处状态,需要开发者根据设计以及其他数据是否齐全决定是否可以进行迁移,如果不可迁移,流程会立即结束。
10+
11+ + state leave 在check change之后被调用,开发者在这里处理当前状态离开所需要进行的清理工作。
12+
13+ + state in 在 state leave 之后被调用,开发者在这里处理新状态的启动。
Original file line number Diff line number Diff line change 1+ ![ https://github.com/LittleLollipop/androidMVT/blob/master/Design/UI.png ] ( https://github.com/LittleLollipop/androidMVT/blob/master/Design/UI.png )
2+
3+ 页面与逻辑代码的衔接处考虑到复用以及activity管理机制的因素,将activity与UI分离处理,UI的处理全部在Actor当中,作为基类的activity会转发调用给当前所持有的Actor。
4+
5+ Actor本身使用多层装饰器进行创建,将功能以装饰器的形式进行解耦和复用。
6+
7+ 此处的设计同时也可以适应系统对于Activity的销毁及重建,任何业务都可以不渗透到Activity层面,重建的Activity只需要重新挂载已存在的Actor,或让对应的Actor重建即可,而页面中所依赖的数据信息被Actor或Business Machine所持有,并不需要在Activity中进行存储读写。
8+
9+
Original file line number Diff line number Diff line change 1+ # MVT
2+
3+ ![ https://github.com/LittleLollipop/androidMVT/blob/master/Design/App.png ] ( https://github.com/LittleLollipop/androidMVT/blob/master/Design/App.png )
4+
5+
16## MVT
27
8+ Machine View Tools,此库试图解决高复杂度的业务逻辑在长期迭代中的稳定性,以及保障功能库/模块 的高健壮性。如果在较简单的业务中使用可能体验会有些繁琐。
9+ 保证稳定性/健壮性的逻辑是依靠完备状态机对每个状态的清晰定义保障逻辑隔离,依靠状态机迁移时的检查保障程序运行状态正确。通过将功能抽象为工具类/静态方法,将逻辑用状态机表达,实现分离业务功能与业务逻辑。
10+
11+ ## App Machine
12+
13+ 被设计用来管控App运行状态以及进行全局性操作,同时管理其他状态机。
14+
15+ ## Business Machine
16+
17+ 所有业务的管理器,其中提供了业务模块的基类。业务基类中提供了基本的四种状态,并限定同一时间只有一个业务可以处于前台运行状态。
18+ 在业务切换时,管理器会限制切换流程复合设计,只有切换流程完全执行完才会解锁业务切换功能,这个特性可以保障业务模块切换时出现并发逻辑可以安全运行,并且不需要在业务中做额外逻辑处理这种并发,所以同时也提供了高度解耦业务的可能。
19+
20+
21+ ## 这些部分的设计可能也需要了解
22+
23+ [ UI部分的设计] ( https://github.com/LittleLollipop/androidMVT/blob/master/Design/UI.md )
24+
25+ ## 这里有些工具,被设计用来表达纯粹的逻辑
26+
27+ [ State Machine] ( https://github.com/LittleLollipop/androidMVT/blob/master/Design/StateMachine.md )
28+
29+ Mission
30+
31+ Task Loader
332
33+ Manifold Valve
434
35+ ## 如何使用
536 allprojects {
637 repositories {
738 ...
You can’t perform that action at this time.
0 commit comments