WorkManager PeriodicWorkRequest запускается немедленно - PullRequest
0 голосов
/ 05 мая 2020

Я создал период c WorkManager для отправки уведомления через 12 часов. Проблема в том, что когда я отправляю вызов для планирования WorkManager, работа выполняется немедленно, а также по расписанию через 12 часов. Я не хочу, чтобы WorkManager запускался немедленно, но в запланированное время через час.

Вызов из MainClass:

  Constraints constraints = new Constraints.Builder()
                //wifi only
                .setRequiredNetworkType(NetworkType.UNMETERED)
                .build();

        PeriodicWorkRequest periodicWork = new PeriodicWorkRequest.Builder(WorkManagerCheckReport.class, 12, TimeUnit.HOURS)
                .addTag(TAG)
                .setConstraints(constraints)
                .build();

    WorkManager.getInstance(getApplicationContext()).enqueueUniquePeriodicWork(TAGWORKMANAGER, ExistingPeriodicWorkPolicy.KEEP, periodicWork);

Класс WorkManager:

class WorkManagerCheckReport(context: Context, params: WorkerParameters) : Worker(context, params) {

    var id = 0
    private val TAG = "WorkManagerCheckReport"

    //flag to keep track if document is available to the patient.
    private var flagReportNotification = false
    private var isReportNOTAvailableToPatient = false

    override fun doWork(): Result {
        Customer.log(TAG, "Workmanager called.")

        id = inputData.getLong(NOTIFICATION_ID, 0).toInt()

        sendNotification()

        return success()
    }

1 Ответ

0 голосов
/ 05 мая 2020

Вы можете попробовать следующее:

PeriodicWorkRequest periodicWork = new 
PeriodicWorkRequest.Builder(WorkManagerCheckReport.class, 12, TimeUnit.HOURS)
            .addTag(TAG)
            .setConstraints(constraints)
            .setInitialDelay(12, TimeUnit.HOURS)
            .build();

Устанавливает начальную задержку для WorkRequest

...