Получить экземпляр WorkManager в ContentProvider - PullRequest
1 голос
/ 04 июля 2019

Я хочу запланировать задачу в поставщике контента:

class LogProvider : ContentProvider() {
    override fun onCreate(): Boolean {
        Log.i("Lagg", "Initializing LogCollection")
        return try {
            context?.let { LogCollectionInitializer().initializeCollector(it) }
            true
        } catch (e: Exception) {
            false
        }
    }
    // ...
}

Где инициализатор планирует работу:

WorkManager.getInstance()
                .enqueueUniquePeriodicWork(
                        CleanLogDatabaseTask.DB_CLEANER_TASK_NAME,
                        ExistingPeriodicWorkPolicy.KEEP,
                        PeriodicWorkRequestBuilder<CleanLogDatabaseTask>(DB_CLEANING_INTERVAL, TimeUnit.MILLISECONDS)
                                .setBackoffCriteria(BackoffPolicy.LINEAR, PeriodicWorkRequest.MIN_BACKOFF_MILLIS, TimeUnit.MILLISECONDS)
                                .build()
                )

Проблема в том, что я получаюэта ошибка:

 java.lang.IllegalStateException: WorkManager is not initialized properly.  The most likely cause is that you disabled WorkManagerInitializer in your manifest but forgot to call WorkManager#initialize in your Application#onCreate or a ContentProvider.
  • Нет, я не отключил WorkManager init.Что именно вызывает эту проблему?

Должен ли я действовать по-другому, когда я получаю доступ к workManager от поставщика контента?

1 Ответ

1 голос
/ 06 июля 2019

Как мы знаем, WorkManager имеет свой собственный контент-провайдер.Поэтому, если вы переопределите его и установите его приоритет выше, он будет инициализирован раньше других провайдеров.так вот:

            android:name="androidx.work.impl.WorkManagerInitializer"
            android:authorities="${applicationId}.workmanager-init"
            android:initOrder="11"
            android:enabled="true"
            android:exported="false" /> ```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...