特點:
1、0個類0行代碼(除了apt及生成的僅僅一個類的代碼)
2、0反射0性能損耗,基于編譯期間注解處理器
3、支持任何類型的參數(shù)傳遞,沒有原生Intent的數(shù)據(jù)大小限制
4、支持頁面元素共享的轉(zhuǎn)場動畫
用法
那么,既然敢說極簡,到底有多簡單呢,來看看用法:

1、@Router(C.USER_INFO)注解參數(shù) USER_INFO = "userInfo"; 就是當前頁面的actionName簡稱。
2、@Extra(C.HEAD_DATA)注解標注上個界面?zhèn)鬟M來的參數(shù)user信息,注解內(nèi)的值就是取值時的key。
3、@SceneTransition(C.TRANSLATE_VIEW)注解標注上個界面?zhèn)鬟^來的共享元素轉(zhuǎn)場動畫的View。
除了這個注解 ,就沒有其他任何代碼了。
使用時,也就一句話:
TRouter.go(C.USER_INFO, new ExtraData(C.HEAD_DATA, SpUtil.getUser()).build(), im_face);
對于不傳參的就更簡單了:
TRouter.go(C.FEED_BACK);
再看看之前的寫法:
ActivityCompat.startActivity(mContext, new Intent(mContext, UserActivity.class) .putExtra(C.HEAD_DATA, SpUtil.getUser()) , ActivityOptionsCompat.makeSceneTransitionAnimation( (Activity) mContext, im_face, C.TRANSLATE_VIEW).toBundle());
于是,這些代碼都可以注釋掉刪掉啦:

當然,重構(gòu)前的目標Activity里的初始化代碼,也可以刪掉啦:

為什么刪掉呢,因為,這些極具規(guī)律性的代碼,不需要手寫,全部由APT自動生成了。
原理
來看看我們的TRouter里自動生成的頁面跳轉(zhuǎn):

以及自動給目標Activity自動初始化傳參和轉(zhuǎn)場View的代碼:

整個TRouter的原理,就是讓Apt幫我們寫代碼。
先根據(jù)注解整理出需要的信息:

然后按照固定套路生成代碼就可以了,例如:

具體代碼請看RouterProcessor。因為邏輯并不復雜,為了保持簡潔,沒有像ButterKnife那樣針對每個目標單獨生成代理類,直接生成全局的靜態(tài)方法即可,只需要保證初始化賦值目標是Public即可,而ButterKnife的代理類實在同一個包名下,則沒有這樣的要求,但是ButterKnife的代理類的獲取需要用反射,兩種實現(xiàn)方式各有利弊吧。
好了 ,2016年最后一趟車即將到站了,所有代碼在項目T-MVP。
題外,TMVP一直在不斷推翻,不斷優(yōu)化,不斷重寫,感興趣的可以關(guān)注我的github看到最新的進展。TMVP全家桶現(xiàn)有TRecyclerView、TRouter、OkBus等。
QQ群:AndroidMVP 555343041
更新日志:
2017/1/31:AOP新增SysPermissionAspect支持動態(tài)申請系統(tǒng)權(quán)限切片,輕松適配6.0+
2017/1/27:AOP新增DbRealmAspect支持Realm數(shù)據(jù)庫,數(shù)據(jù)庫突破你想像的簡單(年夜特供)
2017/1/8: 使用Apt封裝Retrofit生成ApiFactory替換掉所有的Repository,狂刪代碼
2017/1/7: 使用DataBinding替換掉所有的ButterKnife,狂刪代碼
2017/1/6: 使用DataBinding替換掉所有的ViewHolder,狂刪代碼,從此邁向新時代
2016/12/30:使用Apt生成全局路由TRouter,更優(yōu)雅的頁面跳轉(zhuǎn),支持傳遞參數(shù)和共享view轉(zhuǎn)場動畫
2016/12/29:去掉BaseMultiVH新增VHSelector支持更完美的多ViewHolder
2016/12/28:使用Apt生成全局的ApiFactory替代所有的Model
2016/12/27:增加了BaseMultiVH擴展支持多類型的ViewHolder
2016/12/26:抽離CoreAdapterPresenter優(yōu)化TRecyclerView
安卓AOP實戰(zhàn):面向切片編程
Android實用技巧之:用好泛型,少寫代碼
安卓AOP實戰(zhàn):APT打造極簡路由
全局路由TRouter,更優(yōu)雅的頁面跳轉(zhuǎn)
安卓AOP實戰(zhàn):Javassist強擼EventBus
加入OkBus,實現(xiàn)注解傳遞事件
安卓AOP三劍客:APT,AspectJ,Javassist
1、去掉所有反射>2、新增apt初始化工廠,替換掉了dagger2。>3、新增aop切片,處理緩存和日志