使用Dagger初始化模块的顺序不同

时间:2019-08-09 04:01:23

标签: android dependency-injection module dagger-2 dagger

我正在使用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保持初始化顺序?

0 个答案:

没有答案