Component
一定以最快的速度解决您的 issue
, 提供解决方案.
KComponent 纯 Kotlin 版本已经发布很久啦, 欢迎大家使用 !!!!!!!!!!!!!
可以说到目前为止, 基于 URI
方面的所有路由框架中(ARouter
、WMRouter
、ActivityRouter
...) Component
是最强大和完善的组件化框架.
选择一个更好、更全面的、更稳定、更有发展前景的框架更是你们技术团队或者技术负责人要做的事情!
一个功能强大的组件化框架,极度注重用户体验,带给你使用上不一样的享受.欢迎大家使用,在使用的过程中发现任何问题,欢迎下方的 QQ群
里问或者提 issue
给我
扫码或者点击图片即可下载
- 依赖和配置
- Activity注解使用
- 组件生命周期
- 跳转
- 拦截器
- 服务发现实现跨模块调用
- ProxyIntent 在需要使用
Intent
的地方使用 - 生成文档
- 单独运行
- 名词解释
- 基本介绍
- 更新日志
了解更多请看 wiki 更多功能等你来发现 **有关的文章 到底什么是组件化 **
组件化方案真的有很多,那么这个组件化方案优秀在哪里?相比于 ARouter
、WMRouter
、ActivityRouter
、CC
、DDComponent
等开源的组件化框架, 有哪些一样或者更加优秀的点
-
支持多
Module
-
支持
Google App Bundle 架构
-
支持
Flutter
,H5
等混合项目 -
支持
androidx
, 几乎没有其他组件化框架支持androidx
的 -
整个设计贴近原生,对原生的代码入侵极少,尽最大的可能保留原生的代码
-
支持依赖注入、支持目标界面的路由参数
-
跨模块调用
-
支持业务组件生命周期(被加载和被卸载)
-
配套的
Idea Plugin
方便快速浏览,持续会更新此 插件 -
完美支持
RxJava2
(使用rx
库) -
服务发现(跨模块调用)和路由分开设计 - 其实这两块本来就是两个方面,我不清楚为什么很多方案中都柔和在一块
-
业务模块单独运行
-
路由跳转功能
-
支持生成文档
-
支持获取目标的 ProxyIntent
-
支持标准
URI
的使用 -
无缝对接
H5
-
H5
只需利用URL
即可任意路由到任何界面(只需下面一段统一的跳转. 完全不需要关心目标界面是否需要登陆、定位、权限等.)@JavascriptInterface public void openUrl(final String url) { Router.with(this).url(url).forward(); }
-
H5
发起路由不需要关心目标界面需要做的先决条件(框架的页面拦截器已经帮您做完)
-
-
支持原生的跳转动画
-
支持跳转
Fragment
(也就是跨组件获取Fragment
) -
路由拦截器执行线程设计是主线程, 整体是异步的(这点很多人不理解, 没有关系. 先用起来之后在慢慢理解)
- 在路由拦截器的执行线程的设计上,考虑到用户平时书写的
90%
代码都是在主线程的,
所以路由拦截器的执行线程也设计为主线程执行,可以让您放心的操作UI
、弹框等操作.
同时提供Callback
机制可以在拦截器中做任何耗时的任务
这点绝对是压倒性的优势,不仅整体是异步
的,而且拦截器中能像平常一样写实现的代码
- 在路由拦截器的执行线程的设计上,考虑到用户平时书写的
-
路由的取消,基本上没有路由框架支持路由的取消,这也是一个很大的优势!
- 手动用代码取消某次路由
- 路由自动取消, 当发起路由的
Fragment
或者Activity
销毁的时候会取消
-
路由拦截器,足矣满足所有业务情况(具体看 拦截器wiki)
- 全局拦截器(针对全部路由)
- 局部路由拦截器
- 页面拦截器(针对所有跳转到某一个界面的路由)
- 拦截器别名,支持跨模块使用(可以让每一个拦截器都放在自个的模块)
-
跳转
- 持标准
URI
- 支持自定义
Intent
, 你可以给任意一个Intent
标记路由, 这个功能很强大! - 支持类似
Retrofit
接口编程式跳转 -
Idea Plugin
强势支持跳转代码和目标界面的来回导航,也支持拦截器的代码使用和声明处的来回导航
- 持标准
-
0 配置拿到目标界面返回的
ActivityResult
, 很多框架不支持或者需要入侵BaseActivity
. 绝对的优势- 和系统的行为一样,当
Context
是Application
或者Service 的 Context
或者ContentProvider 的 Context
的时候, 不支持获取ActivityResult, 如果真的有需要, 你可以使用栈顶的Activity
来充当Context
- 除第一点说的几个
Context
, 其他的情况都是支持的,包括Dialog
中获取到的Context
. - 如果你想单独使用这个功能, 也可以单独依赖使用, 链接是这里
- 和系统的行为一样,当
-
-
注解驱动器
不支持增量更新, 暂时不知道怎么去做
Android Studio
中搜索插件名称:RouterGo, 即可下载对应的插件
RouterGo 源码地址:帮助你快速导航到目标界面或者目标拦截器,你值得拥有!
demo
示例代码app
--> 壳工程Module1
-->Java
业务模块Module1run
-->Module1
业务模块单独运行的Application
应用Module2
-->Kotlin
业务模块ModuleHelp
-->Help
业务模块, 一些有关通用的或者系统相关的放这里ModuleUser
-->User
业务模块ModuleBase
--> 各个业务模块的基础模块, 上述的没一个业务模块都需要依赖
- 实现库源码
ComponentApi
-->Api
库ComponentCompiler
--> 注解驱动器库ComponentImpl
--> 实现库ComponentRxImpl
--> 实现库RxJava
的扩展ComponentPlugin
--> 配套的Gradle
, 功能有两个- 优化初始化的方式, 优化反射加载模块为正常的
new
对象的方式, 利用字节码修改技术 - 生成路由文档
- 优化初始化的方式, 优化反射加载模块为正常的