2021年12月4日 星期六

Android WorkManager DI Set Up With Koin | WorkManager 搭配 Koin 使用

這次導入 work 要搭配 koin,所以配置上比較麻煩一些。

首先加入 work 依賴

     //2.7需要api31以上

    def work_version = "2.6.0"

    implementation "androidx.work:work-runtime-ktx:$work_version"

    androidTestImplementation "androidx.work:work-testing:$work_version"


再來是 koin 依賴

    def koin_version = "3.1.4"

    implementation "io.insert-koin:koin-android:$koin_version"

    implementation "io.insert-koin:koin-androidx-workmanager:$koin_version"

    testImplementation "io.insert-koin:koin-test:$koin_version"


接著關閉 default 的 work init,在 manifest 加上

 <!--work manager 2.6+將 work manager 移到 startup,移除系統的 work manager,使用koin的-->

        <provider

            android:name="androidx.startup.InitializationProvider"

            android:authorities="${applicationId}.androidx-startup"

            android:exported="false"

            tools:node="merge">

            <!-- If you are using androidx.startup to initialize other components -->

            <meta-data

                android:name="androidx.work.WorkManagerInitializer"

                android:value="androidx.startup"

                tools:node="remove" />

        </provider>


在你的 application 裡設定koin init,位置不對,初始化會錯誤喔


private fun initKoin() {
        startKoin {
            androidLogger()
            androidContext(this@App)
            workManagerFactory()
            modules(listOf(xxx, bbb))
        }
    }

這樣配置上就完成了~

然後就可以開始寫你的 work 了~

參考:









沒有留言:

張貼留言