维护4年的组件化框架 Component 升级到 KComponent 啦

前言

KComponent 它来啦. 从 2018.8 开始, Component 项目正式开源. 到目前已经 4 年的时间了. 这几年中, Component 不断升级优化. 最后趋于稳定.

为了组件化框架更好的发展, KComponent 继承了 Component 的优点, 升级为一个纯 Kotlin 的项目. 不再支持 Java, 注解驱动器也升级为 KSP

如果想要兼容 Java, 还请继续使用 Component , 如果你的项目是纯 Kotlin 项目, 请使用 KComponent

KComponent 比 Component 的优点

  1. 拦截器不再通过 callback 方式, 直接提供 suspend 方法. 这个大家看到就懂了. 可以更方便的在拦截器中写耗时或者并且的代码了
  2. 拦截器的类上支持 @MainThread 和 @IOThread 注解来决定拦截器默认的执行线程
  3. 属性注入支持 late init 以及 Nullable 和 NonNull 的属性了
  4. 支持注入 Uri 参数了
  5. 注解驱动器从 Annotation 和 Kapt 升级为 Ksp. 编译的速度提升了不少!!!
  6. 重命名几个有歧义的 callback 的名称.

依赖配置

手动加载 反射 或者 自动加载 ASM 字节码

路由

@RouterAnno(hostAndPath = "user/login",
)
class LoginAct: AppCompatActivity {@AttrValueAutowiredAnnolate init name: String@AttrValueAutowiredAnno("password")var password1: String? = nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)Component.inject(target = this)// xxxxxx}}
Router
.with(context)
.hostAndPath("user/login")
.putString("name", "xiaojinzi")
.putString("password", "123456")
.forword()

更多的用法和更详细的解释请查看文档:路由跳转 和 路由标记 @RouterAnno 的使用

服务发现

interface UserSpi {fun login(name: String, password: String)
}@ServiceAnno(UserSpi::class)
class UserSpiImpl : UserSpi {fun login(name: String, password: String) {// xxxx}
}
UserSpi::class.service()?.login(name = "xiaojinzi", password = "xxxxxx")

更多的用法和更详细的解释请查看文档:服务发现的使用 和 [服务的装饰增强](

本文链接:https://my.lmcjl.com/post/12364.html

展开阅读全文

4 评论

留下您的评论.