context: Context,
workerParameters: WorkerParameters,
private val database: IDataBaseRepository,
) : CoroutineWorker(context, workerParameters) {
private val serviceJob = Job()
private val serviceScope = CoroutineScope(Dispatchers.IO + serviceJob)
val time: Long = TimeStamp.getCurrentTimeStamp().time
override suspend fun doWork(): Result {
Timber.v("DatabaseWorker started!")
database.deleteOldNotes(time)
return Result.success()
}
companion object {
const val TAG = "DatabaseWorker"
}
}
class DatabaseWorkerFactory @Inject constructor(
private val iDataBaseRepository: IDataBaseRepository
) : WorkerFactory() {
override fun createWorker(
appContext: Context,
workerClassName: String,
workerParameters: WorkerParameters
): ListenableWorker? {
return when (workerClassName) {
DatabaseWorker::class.java.name ->
DatabaseWorker(appContext, workerParameters, iDataBaseRepository)
else ->
// Return null, so that the base class can delegate to the default WorkerFactory.
null
}
}
}
@Module
class WorkerModule {
@Singleton
@Provides
fun provideWorkManagerConfiguration(
databaseWorkerFactory: DatabaseWorkerFactory
): Configuration {
return Configuration.Builder()
.setMinimumLoggingLevel(android.util.Log.DEBUG)
.setWorkerFactory(databaseWorkerFactory)
.build()
}
@Singleton
class IDatabaseWorkerWorkerFactory @Inject constructor(
databaseRep: IDataBaseRepository
) : DelegatingWorkerFactory() {
init {
addFactory(DatabaseWorkerFactory(databaseRep))
}
}
}
@Singleton
@Component(
modules = [
AppModule::class,
BuilderModule::class,
CommonUiModule::class,
DatabaseModule::class,
NetworkModule::class,
PreferencesModule::class,
RepositoryModule::class,
WorkerModule::class,
]
)
....
class App : Application(), Configuration.Provider {
val appComponent: AppComponent by lazy { DaggerAppComponent.factory().create(this) }
override fun onCreate() {
super.onCreate()
Timber.plant(Timber.DebugTree())
appComponent.inject(this)
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
}
@Inject
lateinit var workerConfiguration: Configuration
// Setup custom configuration for WorkManager with a DelegatingWorkerFactory
override fun getWorkManagerConfiguration(): Configuration {
WorkManager.getInstance(this).enqueue(
PeriodicWorkRequestBuilder<DatabaseWorker>(10, TimeUnit.SECONDS).addTag(
DatabaseWorker.TAG
).build()
)
return workerConfiguration
}
}
Вы бы хоть ошибку написали )
а ее нет) просто не подключается и все)
я все расписал где он применяется, по идее что то еще нужно добавить
Попробуйте запустить под отладчиком и посмотреть ) Так глядя в код не видно )
а у вас есть workmanager готовый с даггером?
Нет, у меня нету (
Обсуждают сегодня