模块化解耦框架RxFluxArchitecture4-依赖库与依赖注入

栏目: Android · 发布时间: 6年前

core-arch-annotations 是注解库,配合注解编译库 core-arch-processor 使用,实现 Application 多模块共存。

2. 数据总线 core-eventbus

core-eventbusEventBus 基础上添加 Tag 功能,配合注解编译库 core-eventbus-processor 使用,提高效率。

3. 框架核心 core-arch

3.1 核心接口

  • RxSubscriberView 实现该接口的 View, RxFlux 根据其生命周期自动注册订阅、取消订阅,接收 core-eventbus 发送的通知。
  • RxFluxView<T extends ViewModel> 实现该接口的 View,可获取对应的 Store 并关联 View 的生命周期。
  • RxAppLifecycle Application 生命周期代理接口。

3.2 核心类

  • RxApp 继承 DaggerApplication ,为使用 @ContributesAndroidInjector 注解的 Activity 自动生成依赖注入器。使用反射获取编译生成类 RxAppLifecycleImpl ,实现 Application 多模块共存。
  • RxFlux 管理 View 生命周期,关联 View 与 Store,使用 @Inject 标注构造方法注入。
  • RxDispatcher 使用 core-eventbus 对 View 和 Store 注册订阅、发送通知、取消订阅,使用 @Inject 标注构造方法注入。
  • RxActionManager 管理 RxActionio.reactivex.disposables.Disposable 对应关系,使用 @Inject 标注构造方法注入。
  • RxStoreFactory 实现 ViewModelProvider.Factory ,为 View 提供 Store,使用 @Inject 标注构造方法注入。
  • RxActionCreator 所有 ActionCreator 的父类,封装 RxDispatcherRxActionManager ,为子类提供公共方法。
  • RxFluxModule 全局依赖注入仓库,提供 ViewModelProvider.Factory 的实现类 RxStoreFactory 实例对象,提供 Context 的子类 Application 实例对象。

3.3 核心View

  • RxFluxActivity<T>RxFluxFragment<T>RxFluxDialog<T> 实现 RxFluxView<T>RxSubscriberView 接口方法,是所有 View 的父类。
  • RxFluxActivity<T> 实现 dagger.android.supportHasSupportFragmentInjector 接口,为使用 @ContributesAndroidInjector 注解的 Fragment 自动生成依赖注入器。

通用库

core-common 封装自定义父类和自定义常用 工具 方法,添加通用依赖,使用时可按自己编程习惯重新编写。

1. 包 base

  • BaseApp 继承 RxApp ,全局使用的Application,初始化全局使用的方法工具。
  • BaseView 自定义 View 接口。
  • BaseActivity<T> 实现 BaseView ,继承 RxFluxActivity<T> ,使用 ButterKnife ,自定义全局响应 RxLoadingRxErrorRxRetry
  • BaseFragment<T> 实现 BaseView ,继承 RxFluxFragment<T> ,使用 ButterKnife ,自定义 ToolBarMenu
  • BaseDialog<T> 实现 BaseView ,继承 RxFluxDialog<T> ,使用 ButterKnife

2. 包 common

  • CommonActionCreator 可全局使用的 ActionCreator,使用 @Inject 标注构造方法注入。
  • CommonLoadingDialog 可全局使用的进度弹框,使用 @Inject 标注构造方法注入。
  • CommonHttpInterceptor 可全局使用的 OkHttp 拦截器,使用 @Inject 标注构造方法注入。
  • CommonException 自定义异常。
  • CommonModule 通用全局依赖注入仓库,依赖 RxFluxModule
  • CommonUtils 常用自定义工具。
  • CommonLoadMoreView 自定义 BaseRecyclerViewAdapterHelper 加载样式。

功能库

1. 图片解析 core-image

core-image 封装 Glide ,解析图片。

2. 常用工具 core-utils

  • ActivityUtils 自定义 Activity 中常用方法。
  • LocalStorageUtils 封装 Fastjson 的工具类,使用 @Inject 标注构造方法注入。

3. 下载进度提醒 core-progress

core-progress 使用 OkHttpRetrofit ,依赖核心库 core-arch ,完成下载进度提醒,使用 @Inject 标注构造方法注入。

4. 缓存Cookie core-cookie

core-cookie 接口认证使用 Cookie 缓存,使用 @Inject 标注构造方法注入。

壳模块

壳模块 module-appSimpleApplication 继承 BaseApp ,使用依赖注入器 SimpleComponent ,实现依赖注入。

@RxAppBody
public class SimpleApplication extends BaseApp {
    @Override
    protected AndroidInjector<? extends DaggerApplication> applicationInjector() {
        return DaggerSimpleComponent.builder().application(this).build();
    }
}
复制代码

SimpleComponent 中添加业务模块依赖注入仓库、通用全局依赖注入仓库 CommonModule 、Dagger.Android支持仓库 AndroidSupportInjectionModule

@Singleton
@Component(modules = {
        GanAppModule.class,
        WanAppModule.class,
        com.huyingbao.module.wan.kotlin.module.WanAppModule.class,
        CommonModule.class,
        AndroidSupportInjectionModule.class})
public interface SimpleComponent extends AndroidInjector<SimpleApplication> {
    @Component.Builder
    interface Builder {
        @BindsInstance
        SimpleComponent.Builder application(Application application);

        SimpleComponent build();
    }
}
复制代码

业务模块

业务模块 module-wan 依赖注入仓库 WanAppModule ,包含 WanInjectActivityModuleWanStoreModule

  • WanInjectActivityModule 通过注解 @ContributesAndroidInjector ,自动生成 Activity 的依赖注入器。
  • WanStoreModule 提供 Store 对象仓库,Store 使用 @Inject 标注构造方法注入。

每个 Activity 的注入器中添加 WanInjectFragmentModuleWanInjectFragmentModule 通过注解 @ContributesAndroidInjector ,自动生成 Fragment 的依赖注入器。

@Module
public abstract class WanInjectActivityModule {
    @ActivityScope
    @ContributesAndroidInjector(modules = WanInjectFragmentModule.class)
    abstract ArticleActivity injectArticleActivity();

    @ActivityScope
    @ContributesAndroidInjector(modules = WanInjectFragmentModule.class)
    abstract LoginActivity injectLoginActivity();
}
复制代码

源码

开源模块化解耦框架 RxFluxArchitecture ,欢迎大家点赞Fork,更欢迎点评指导。


以上所述就是小编给大家介绍的《模块化解耦框架RxFluxArchitecture4-依赖库与依赖注入》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

人类思维如何与互联网共同进化

人类思维如何与互联网共同进化

[美] 约翰·布罗克曼 / 付晓光 / 浙江人民出版社 / 2017-3 / 79.90元

➢人类是否因互联网的诞生进入了公平竞争的场域? “黑天鹅事件”频频发生,我们的预测能力是否正在退化? 智人的第四阶段有哪些特征? 全球脑会使人类成为“超级英雄”吗? 虚拟现实技术会不会灭绝人类的真实体验? 还有更多不可预知答案的问题,你将在本书中找到属于自己的答案! ➢ 我们的心智正和互联网发生着永无止境的共振,人类思维会因此产生怎样的进化效应?本书编者约翰•布......一起来看看 《人类思维如何与互联网共同进化》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

MD5 加密
MD5 加密

MD5 加密工具