Как обеспечить, чтобы PeriodicWorkRequests вызывались при перезагрузке устройства на Android N и выше - PullRequest
0 голосов
/ 22 марта 2019

Я недавно пытался использовать WorkManager PeriodicWorkRequest как надежный способ периодически получать обновления местоположения пользователя в фоновом режиме.Библиотека удовлетворяла моим требованиям, и именно эта деталь привлекла мое внимание:

Гарантирует выполнение задачи, даже если приложение или устройство перезагружается

После внедрения и тестирования я попыталсяперезагрузил мое устройство и заметил, что сообщение Log и приложение App уведомлений так и не появилось.

Естественно, я провел некоторое исследование и наткнулся на это: PeriodicWorkRequest не работает после перезагрузки устройства в Android Oreo

Поэтому я попытался использовать широковещательный приемник BOOT_COMPLETED для запуска WorkRequest при перезагрузке устройства, но он не работал.Я проверил многочисленные вопросы BOOT_COMPLETED получателей о SO, но ни один из них не работал, кроме этого здесь: Broadcast Receiver не работает после перезагрузки устройства в Android , но это включало в себя выбор пользователем приложения в качестве AccessibilityService , который, по моему мнению, является помехой для UX.

После некоторых исследований я обнаружил, что WorkManager использует BOOT_COMPLETED BroadcastReceiver под капотом.До сих пор я проводил тестирование на устройствах Android Nougat и Oreo, поэтому я протестировал BroadcastReceiver на Samsung с API 16, а также на HTC с API 22. Receiver сработал, и я удалил их, а также протестировал WorkRequests при перезагрузке;они тоже работали!

Вот как я реализовал мой PeriodicWorkRequest

PeriodicWorkRequest request =
                new PeriodicWorkRequest.Builder(LocationListenerWorker.class,
                        12, HOURS)
                        .build();

        mWorkManager.enqueueUniquePeriodicWork(Constants.LOCATION_TASK_ID,
                ExistingPeriodicWorkPolicy.REPLACE, request);

Буду признателен за любую помощь в том, как обеспечить, чтобы запросы также вызывались при перезагрузке устройства на устройствах с API 24+

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...