Butterfly – 蝴蝶
Github地址:
https://github.com/ssseasonnn/Butterfly
Butterfly – 小巧而强大的武器,拥有它,让你的Android开发如虎添翼,Carry全场!
只有最强大和最经验的勇士才能挥动蝴蝶,但它在战斗中提供了令人难以置信的灵巧
物品介绍: +30 敏捷 +35% 闪避 +25 攻击 +30 攻速
功能介绍
蝴蝶通过两个不同的注解来实现不同的功能:
Agile
通过给Activity添加Agile注解,并设置对应的scheme,随后即可通过Butterfly进行导航,或者导航并获取返回数据
Agile支持附带参数导航,有两种方式,一种是通过拼接scheme,将参数添加到scheme中 另一种是通过调用params方法手动传入参数,或者两者混合进行, 随后可在导航后的页面中获取对应的参数
在导航目的页面,可通过参数的key字段来获取传递的参数值
除了手动解析参数以外,还可以装备Bracer来实现全自动进行参数解析
Bracer 使用方式详情见: Github 地址:
https://github.com/ssseasonnn/Bracer
Agile支持拦截器,可用于在导航前预处理部分逻辑,如进行登录检测 此外拦截器中也可进行导航,但为了避免拦截器套娃,需要添加skipInterceptor()方法以忽略拦截器
Agile除了支持页面导航以外,还支持导航Action,Action无页面,可进行某些逻辑处理 首先让自定义的Class继承Action,然后添加@Agile注解并设置scheme,其余和页面导航一致
Agile除了直接调用carry导航以外,还可以调用flow返回Flow对象, 利用Flow对象可对导航流程进行处理
Evade
蝴蝶使用简单的两个注解即可实现任意组件之间进行通信,而组件之间无需任何直接或间接依赖
例如有两个组件:Module Foo 和Module Bar 需要通信
在Module Foo中,定义接口,并添加Evade注解:
在Module Bar中,定义实现,,并添加EvadeImpl注解:
由于Evade使用类名称作为定义和实现关联的重要依据,因此接口类名和实现类名必须相同,并且实现类名以Impl结尾.
如无法以类名作为关联,也可使用相同的字符串类型作为关联key
随后即可在Module Foo中,使用evade方法获取Home并调用:
除此之外, Evade也支持通过下沉依赖的形式, 进行强关联类型的通信
例如以下三个组件:公共组件Module Base,Module Foo,Module Bar
首先将Home接口下沉至公共组件Module Base中:
然后在Module Bar中,实现接口:
之后便可在Module Foo中,使用evade方法获取Home并调用:
路由表
Butterfly会为每个使用了注解的Module生成一个路由表, 命名规则为: Butterfly[模块名称]Module
手动注册:
使用插件自动注册:
1、添加插件依赖
2、实现自己的Application类
混淆配置
俗话说得好,蝴蝶在手,天下我有! 这么好的装备你不来一把?
Github地址:
https://github.com/ssseasonnn/Butterfly
最后
在这里就还分享一份由大佬亲自收录整理的学习PDF+架构视频+面试文档+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料
这些都是我现在闲暇时还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效地帮助大家掌握知识、理解原理,帮助大家在未来取得一份不错的答卷。
当然,你也可以拿去查漏补缺,提升自身的竞争力。
真心希望可以帮助到大家,Android路漫漫,共勉!
如果你有需要的话,只需私信我【进阶】即可获取
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!