MVP +RxJava2 +Dagger2搭建app框架
采用MVP模式将Activity中的业务逻辑全部分离出来,让Activity只做UI逻辑的处理,所有跟Android API无关的业务逻辑由Presenter层来完成,降低了耦合度,使得层级职责更加明确。
使用泛型和Dagger2中的注解,通过依赖注入的方式完成Presenter的Model的创建,避免了View层直接创建Present与Present层直接创建Model造成的依赖关系,将View层与Presenter层,Present 层与Model层进行解耦,降低了模块的耦合度
网络模块
基于retrofit+rxjava进行了二次封装构建了初始化Retrofit. I具类的基类NetWorkApi内部对OkHttpClient进行初始化并配置了相关的拦截器,避免了重复创建Retrofit实例以及重复配置属性。封装了BaseObserver来处理服务器响应以及响应数据的基类BaseResponse ,使得业务开发者只需在使用的时候添加自己对应的接口和Bean,调用方便简洁。
跨进程通信
基于AIDL解决了基纡websocket保活聊天消息的应用跨进程通信的问题,实现了app端与pc端客服聊天系统的数据传输。
路径详情界面
UI采用View Pager嵌套Fragment的方式,进行完全lazyLoad,主要在Fragment中的setUserVisibleHint(方法中结合标识位来判断Fragment处于不可见到可见,可见到不可见哪种状态,从而执行对应的网络数据加载或网络请求取消,优化网络请求api的设置,减少了偶现的由于网络加载带来的卡顿,同时减少了不必要的fragment页面数据缓存而带来的极端情况下的内存OOM。
屏幕适配
采用SmallestWidth方案进行屏荨适配,实现适配范围自由控制,解决了在不同分辨率车机下的屏幕适配的问题。
订单模块
基于商品的sku算法实现了商品选择规格置灰通过RegycleView实现多地址拆分订单,并对拆分的订单实现删除,修改,编辑动态布局