项目收获:
1. 团队多人开发下
项目第一级目录按功能模块划分,二级分类按控件划分。这个原则对res目录下的values目录同样适用。也即:colors,strings,dimens,atrr,style文件要创建多个,用功能模块分类,这样提交代码时,方便审核,较少提交冲突。对需要相互依赖的文件,统一放在一个目录下集中体现
2. 跳转逻辑
一部分放在Navigator静态类里,一部分逻辑封装到BaseActivity的Protect方法(如果所有逻辑都封装在父类,增加了父类负担,代码可读性降低)
3. 约定 思维
接口定义,泛型的使用位置,方法入参,返回数据这些都体现着约定思想,谁调用我,就要按我的约定规则来。约定规则怎么写才能表示约定人的意图呢?这要用到约定规则的规则Java语法和使用。学好Java才能让程序员充分表达自己的逻辑和意图。
4. RxJava操作符:
创建型:
- create,just,from,
- range,interval
- combineLatest
- concat(多个流按顺序串行发射),merge(多个流交叉合并成一个流发射),zip(多个流合并成一个流后统一发射)
处理型:
- map,flatMap(交叉发射),concatMap(串行发射)
- repeat,take,takeLast
- first(只发射满足条件的第一个),single(只发射顺序为第一个的数据源)
- debounce(发射最后一次)
- concatWith
- skip(N) 抑制Observable发射的前N项数据
- merge(count,skip)每接收到count个数据后,将该count的个数据打包,并跳过第skip个数据,发送给订阅者
RxLifecycle使用
RxJava 中 merge, contact,compose 区别
带你学开源项目:RxLifecycle-当Activity被destory时自动暂停网络请求
5. Java中,父类和子类如何配合,以实现一个完整逻辑?
父类盛放共有的,具体的,稳定的的变量和方法
子类相对于父类具有拓展能力和行为,不同子类有不同方法。
明确谁是导演类(Director Class,顶层的导演类也称为客户端类,用这样的方式划分体现类与类的调用关系)。
如果是父类是子类的导演,父类调用子类,则子类实现父类的抽象方法或者重写Protected方法。此时,站在父类角度看:模块逻辑的执行顺序在父类里规划,站在子类的角度看:子类是具体逻辑的战场,父类是援军,父类在调用是,把自己的变量(援军)通过方法参数传给子类,具体逻辑的实施(战场)在子类方法里。
如果子类是父类的导演,子类新的方法里调用父类的方法。