android - 使用 Dagger 初始化模块的顺序不同
问题描述
我正在使用 Dagger 2 来初始化我的应用程序中的一些模块,这些模块最初是在我的 Application 类中初始化的。我希望这些模块以特定顺序初始化。我正在使用初始化程序集来初始化我的模块,但它们是按随机顺序执行的。
我的初始化模块看起来像这样
@Module class InitializerModule {
// initialize Profile library
@Provides @IntoSet
fun initProfileLib(): Initializer = ProfileHelper()
// initialize Video library
@Provides @IntoSet
fun initVideoModule(): Initializer = VideoHelper()
// initialize Video library
@Provides @IntoSet
fun initQuestModule(): Initializer = QuestHelper()
// initialize Audio library
@Provides @IntoSet
fun initAudioModule(): Initializer = AudioHelper()
// initialize Analytics library
@Provides @IntoSet
fun initAnalyticsModule(): Initializer = AnalyticsHelper()
// initialize Login library
@Provides @IntoSet
fun initLogin(): Initializer = LoginHelper() }
应用模块代码
@Module(includes = [InitializerModule::class])
open class AppModule {
}
应用类代码
class Application: DaggerApplication(){
@set:Inject
var initializerSet: Set<@JvmSuppressWildcards Initializer>? = null
override fun attachBaseContext(base: Context?) {
super.attachBaseContext(base)
MultiDex.install(this)
initDaggerComponent()
}
override fun onCreate() {
for (init in initializerSet!!) {
init.initialize(applicationContext)
}
}
}
每次我执行代码时,顺序都是随机的。
ProfileHelper LoginHelper AnalyticsHelper VideoHelper QuestHelper AudioHelper
我的 build.gradle
implementation "com.google.dagger:dagger:2.23.2"
implementation "com.google.dagger:dagger-android:2.23.2"
implementation "com.google.dagger:dagger-android-support:2.23.2"
kapt "com.google.dagger:dagger-compiler:2.23.2"
kapt "com.google.dagger:dagger-android-processor:2.23.2"
如何使用 Dagger 维护初始化顺序?
解决方案
推荐阅读
- javascript - 如何在退出计时器功能的下一部分功能时播放音频?
- postgresql - PostgreSQL 表中的 UPSERT,DBeaver SQL 编辑器,SQL 错误 [42601]:错误:“for”位置或附近的语法错误:10
- python - Python 请求 - 从 S3 拉到多部分类型错误
- informatica - 使用 Informatica Power Center 处理 SCD TYPE_2 中的删除
- php - 对框架和核心 php 使用相同版本的 xampp/php?
- node.js - 为什么电子生成器因访问被拒绝错误而失败?
- qt - 如何在不更改 PATH 的情况下告诉 Cmake Qt 安装目录?
- c++ - 向量作为类成员
- reactjs - setOpen 不会影响表中的特定行
- javascript - WebStorm Live Edit 不适用于 JavaScript,有什么解决方案吗?