Skip to content

Instantly share code, notes, and snippets.

@neonankiti
Created September 19, 2019 15:10
Show Gist options
  • Save neonankiti/5a8fe5dac1921c7d6851178ec1535563 to your computer and use it in GitHub Desktop.
Save neonankiti/5a8fe5dac1921c7d6851178ec1535563 to your computer and use it in GitHub Desktop.
App WorkerFactory setting for WorkManager sample
class AppWorkerFactory @Inject constructor(
private val workerFactories: Map<Class<out ListenableWorker>,
@JvmSuppressWildcards Provider<ChildWorkerFactory>>
) : WorkerFactory() {
override fun createWorker(
appContext: Context,
workerClassName: String,
workerParameters: WorkerParameters
): ListenableWorker? {
val foundEntry =
workerFactories.entries.find { Class.forName(workerClassName).isAssignableFrom(it.key) }
val factoryProvider = foundEntry?.value
?: throw IllegalArgumentException("unknown worker class name: $workerClassName")
return factoryProvider.get().create(appContext, workerParameters)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment