emr*_*rka 7 android dependency-injection android-workmanager dagger-hilt
我在我的应用程序类中启动了一个工作人员,如下所示;
@HiltAndroidApp
class KutuphanemApplication:Application(),Configuration.Provider {
@Inject
lateinit var workerFactory: HiltWorkerFactory
override fun getWorkManagerConfiguration() =
Configuration.Builder()
.setMinimumLoggingLevel(android.util.Log.DEBUG)
.setWorkerFactory(workerFactory)
.build()
Run Code Online (Sandbox Code Playgroud)
我想将单例 dao 注入到我的工作类中以更新数据库中的某些内容。所以我像下面一样注入 dao;
@HiltWorker
class ClearImageNotInArchiveWorker @AssistedInject constructor(
@Assisted val appContext: Context,
@Assisted val workerParams: WorkerParameters,
private val kitapDao: KitapDao): CoroutineWorker(appContext, workerParams) {
override suspend fun doWork(): Result {...}
}
Run Code Online (Sandbox Code Playgroud)
当我在 App 类中加入这个 WorkManager 类时,我得到
WorkerFactory:无法实例化 com.mesutemre.kutuphanem.job.ClearImageNotInArchiveWorker 错误。但应用程序并没有崩溃。这里注入dao有没有问题?
还有我的单例刀;
@Singleton
@Provides
fun provideKitapDao(database: KutuphanemDatabase) = database.getKitapDao();
Run Code Online (Sandbox Code Playgroud)
我解决了这个问题。我搞砸了剑柄编译器 kapts。我已经添加了
kapt("androidx.hilt:hilt-compiler:1.0.0")
Run Code Online (Sandbox Code Playgroud)
进入 gradle 然后我添加了
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove">
</provider>
Run Code Online (Sandbox Code Playgroud)
进入 AndroidManifest.xml 。然后问题就解决了。
| 归档时间: |
|
| 查看次数: |
3062 次 |
| 最近记录: |