【问题标题】:WorkManager PeriodicWorkRequest running inmediatelyWorkManager PeriodicWorkRequest 立即运行
【发布时间】:2020-05-05 14:19:19
【问题描述】:

我创建了一个定期 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】:

    你可以试试这个:

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

    WorkRequest

    设置初始延迟

    【讨论】:

      【解决方案2】:

      更好的方法是设置弹性间隔,以便在指定时间间隔(例如 12 小时)结束时执行作业,将弹性间隔设置为 1 小时。 您的作业将在每 12 小时的最后一小时之间运行。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多