相關係列文章react
模塊化解耦框架RxFluxArchitecture1-框架簡介android
模塊化解耦框架RxFluxArchitecture2-基本功能實現git
模塊化解耦框架RxFluxArchitecture3-訂閱管理綁定生命週期github
模塊化解耦框架RxFluxArchitecture4-依賴庫與依賴注入編程
模塊化解耦框架RxFluxArchitecture5-Application多模塊共存json
框架中使用 Dagger.Android 實現依賴注入功能。緩存
core-arch-annotations
core-arch-annotations
是註解庫,配合註解編譯庫core-arch-processor
使用,實現 Application 多模塊共存。bash
core-eventbus
core-eventbus
在 EventBus 基礎上添加 Tag 功能,配合註解編譯庫core-eventbus-processor
使用,提升效率。cookie
core-arch
core-arch-annotations
、core-eventbus
。RxSubscriberView
實現該接口的 View,RxFlux
根據其生命週期自動註冊訂閱、取消訂閱,接收core-eventbus
發送的通知。RxFluxView<T extends ViewModel>
實現該接口的 View,可獲取對應的 Store 並關聯 View 的生命週期。RxAppLifecycle
Application 生命週期代理接口。RxApp
繼承DaggerApplication
,爲使用@ContributesAndroidInjector
註解的 Activity 自動生成依賴注入器。使用反射獲取編譯生成類RxAppLifecycleImpl
,實現 Application 多模塊共存。RxFlux
管理 View 生命週期,關聯 View 與 Store,使用@Inject
標註構造方法注入。RxDispatcher
使用core-eventbus
對 View 和 Store 註冊訂閱、發送通知、取消訂閱,使用@Inject
標註構造方法注入。RxActionManager
管理RxAction
與io.reactivex.disposables.Disposable
對應關係,使用@Inject
標註構造方法注入。RxStoreFactory
實現ViewModelProvider.Factory
,爲 View 提供 Store,使用@Inject
標註構造方法注入。RxActionCreator
全部 ActionCreator 的父類,封裝RxDispatcher
和RxActionManager
,爲子類提供公共方法。RxFluxModule
全局依賴注入倉庫,提供ViewModelProvider.Factory
的實現類RxStoreFactory
實例對象,提供Context
的子類Application
實例對象。RxFluxActivity<T>
、RxFluxFragment<T>
、RxFluxDialog<T>
實現RxFluxView<T>
、RxSubscriberView
接口方法,是全部 View 的父類。RxFluxActivity<T>
實現dagger.android.supportHasSupportFragmentInjector
接口,爲使用@ContributesAndroidInjector
註解的 Fragment 自動生成依賴注入器。core-common
封裝自定義父類和自定義經常使用工具方法,添加通用依賴,使用時可按本身編程習慣從新編寫。app
core-arch
,惟一不可變更,其他依賴均可替換。core-image
、core-utils
、core-progress
、core-cookie
。base
BaseApp
繼承RxApp
,全局使用的Application,初始化全局使用的方法工具。BaseView
自定義 View 接口。BaseActivity<T>
實現BaseView
,繼承RxFluxActivity<T>
,使用ButterKnife,自定義全局響應RxLoading
、RxError
、RxRetry
。BaseFragment<T>
實現BaseView
,繼承RxFluxFragment<T>
,使用ButterKnife,自定義ToolBar
、Menu
。BaseDialog<T>
實現BaseView
,繼承RxFluxDialog<T>
,使用ButterKnife。common
CommonActionCreator
可全局使用的 ActionCreator,使用@Inject
標註構造方法注入。CommonLoadingDialog
可全局使用的進度彈框,使用@Inject
標註構造方法注入。CommonHttpInterceptor
可全局使用的OkHttp攔截器,使用@Inject
標註構造方法注入。CommonException
自定義異常。CommonModule
通用全局依賴注入倉庫,依賴RxFluxModule
。CommonUtils
經常使用自定義工具。CommonLoadMoreView
自定義BaseRecyclerViewAdapterHelper加載樣式。core-image
core-image
封裝Glide,解析圖片。
core-utils
ActivityUtils
自定義 Activity 中經常使用方法。LocalStorageUtils
封裝Fastjson的工具類,使用@Inject
標註構造方法注入。core-progress
core-progress
使用OkHttp、Retrofit,依賴核心庫core-arch
,完成下載進度提醒,使用@Inject
標註構造方法注入。
core-cookie
core-cookie
接口認證使用 Cookie 緩存,使用@Inject
標註構造方法注入。
殼模塊module-app
中SimpleApplication
繼承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
,包含WanInjectActivityModule
和WanStoreModule
。
WanInjectActivityModule
經過註解@ContributesAndroidInjector
,自動生成 Activity 的依賴注入器。WanStoreModule
提供 Store 對象 組成的Map<Class<? extends ViewModel>, Provider<ViewModel>>
,做爲RxStoreFactory
的構造方法入參,Store 使用@Inject
標註構造方法注入。每一個 Activity 的注入器中添加WanInjectFragmentModule
,WanInjectFragmentModule
經過註解@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,更歡迎點評指導。