工作管理器PeriodicWorkRequest立即运行。

问题描述 投票:0回答:1

我创建了一个周期性的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()
    }
android android-workmanager
1个回答
0
投票

你可以试试这个。

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

设置一个初始延迟 工作请求

© www.soinside.com 2019 - 2024. All rights reserved.