使用Android WorkManager进行本地通知,而不使用AlarmManager

时间:2019-01-24 11:20:29

标签: android android-alarms android-workmanager

用户选择通知消息的时间作为提醒,该时间可以每天或仅在一周中的某天重复。以前,我通过将时间设置为AlarmManager来完成此任务

        Calendar calSet= Calendar.getInstance();
        //calSet.set(Calendar.DAY_OF_WEEK, dayOfWeek); for a particular day of the week
        calSet.set(Calendar.HOUR_OF_DAY, hrs));
        calSet.set(Calendar.MINUTE, min));
        calSet.set(Calendar.SECOND, 00);
        calSet.set(Calendar.MILLISECOND, 00); 
        alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calSet.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);

现在,当设备处于Doze位置时,AlarmManager停止工作。我无法使用setAndAllowWhileIdle,因为我需要重复通知消息。

现在,我有一个使用WorkerManager的选项,但是我不知道如何像在AlarmManager中那样设置时间

      PeriodicWorkRequest.Builder(SetJobWork.class,1,TimeUnit.DAYS)
            .addTag(Id).setConstraints(constraints).build()

假设我需要每天下午1:00运行任务,出路是什么。

1 个答案:

答案 0 :(得分:0)

  

现在我有一个使用WorkerManager的选项,但是我不知道如何像在AlarmManager中那样设置时间

WorkManager不支持您的情况。

  

我不能使用setAndAllowWhileIdle,因为我需要重复通知消息。

作为处理上一个警报的setAndAllowWhileIdle()的一部分,您可以通过调用PendingIntent手动安排下一个警报来重复操作。