地址
https://github.com/meybeBlank/FengArchitecture
前言
Android做了两三年,每次都是用的别人的架构,中途也抽时间看过项目的框架的东西,一知半解,虎头蛇尾。自己没有从0到1的过程,能力没法引起质变,始终还是半吊子,年初打定主意把热门的Retrofit之类全都系统的亲手敲一遍。由经历了找工作遇到坑,再找工作安定下来的一言难尽,最后弄完已经到了年尾。这里做一个简单自我总结,以及自己的一些设想。
结构
目录
base: app基础的类、接口
common: 基础的第三方控件、自定义控件
di:Dagger2基础依赖 以及 业务Module
http: 网络依赖 retrofit rxjava
utils:工具类
bussiness:具体业务。
contract:MVP契约类 VP接口信息
model:数据仓库和JavaBeans
modules:service broadcast等组件
ui:略
Key:
Business1Module:某个Business具体业务P、V层组件提供。创建具体的Presenter与View都需要在这里进行注册。
B1Repository:某个Business具体数据仓库,对Service数据进行了基本处理。
ServiceModule:某个Business具体的网络Service,提供最原始的Retrofit Service。
BaseActivity:实现HasFragmentInjector接口解决DaggerActivity的侵入性问题。
PresentUtil:反射的方式 通过注解{@link APresenter}绑定Presenter与View。
使用
创建Contract,实现具体的Presenter与View,在BusinessModule注册。
创建Service,在ServiceModule注册。创建Repository,并别忘了@Inject。
其他也没啥需要说的了,可以看项目里面的两个简单页面。
最后
当然,还有一些问题待解决。
没有模块化,第一次完整的筹备一个比较成熟的架构,因为平时遇到的项目不够大,实际用不到模块化的东西,也就没有考虑。
P层粒度不好把控,MVP的一点儿小瑕疵,这里粒度分得比较细。
PresentUtils使用反射的方式进行绑定PV,不知道是否可以用APT代码生成的方式降低性能损耗。
Presenter的Scope,为了Component提供Contract.Presenter接口,让View不依赖具体实现而依赖接口,但是AppComponent有不能同时支持@Single 和 @Activity,所以这里Scope有一点儿小瑕疵。
之后具体使用再进一步进行优化吧。
同时也要感谢:
开源接口提供:https://www.jianshu.com/p/e6f072839282
大牛朋友:Rhett Lee
以及提供blog、源码学习的童鞋些。