workmanager при загрузке

#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:

В вашем коде есть несколько проблем:

  1. Вы не указываете никаких ограничений
  2. 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)