我正在使用Dagger 2初始化我的应用程序中最初初始化的某些模块。我希望这些模块以特定顺序初始化。 我正在使用一个初始化程序集来初始化我的模块,但是它们是以随机顺序执行的。
我的初始化模块看起来像这样
@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保持初始化顺序?