#java #android #androidx #android-workmanager
#java #Android #androidx #android-workmanager
Вопрос:
Я пытаюсь начать, почему менеджер работ не запускается при bootreceived?
Constraints constraints = new Constraints.Builder().build();
PeriodicWorkRequest saveRequest = new PeriodicWorkRequest.Builder(UploadWorker.class, 1, TimeUnit.MINUTES)
.addTag("activation")
.build();
OneTimeWorkRequest otr = new OneTimeWorkRequest.Builder(UploadWorker.class).build();
WorkManager.getInstance().cancelAllWork();
WorkManager.getInstance().pruneWork();
WorkManager.getInstance().enqueueUniquePeriodicWork("activation", ExistingPeriodicWorkPolicy.REPLACE, saveRequest);
Комментарии:
1.
Log.d("testingworkmanager", "bootreceived");
это работает?2. да, его работа интересна в bootreceive, но не в классе uploadworker
3. я исправил это, но при запуске он запускается около 15 раз
Ответ №1:
В вашем коде есть несколько проблем:
- Вы не указываете никаких ограничений
- DoWork должен возвращать Result.success() /Result.failure() /Result.retry() Если вы хотите вернуть данные, вам следует использовать этот API: public static Result success(@NonNull Вывод данных)
Комментарии:
1. на самом деле он запущен, но только один раз, даже если я установил периодическую работу с интервалом в 1 минуту, я обновил свой код
2. минимальный интервал для периодического рабочего составляет 15 минут. Это может быть причиной вашей проблемы public static final long MIN_PERIODIC_INTERVAL_MILL — минимальная продолжительность интервала для PeriodicWorkRequest (в миллисекундах). Постоянное значение: 900000 (0x00000000000dbba0)