因此,我正在开发一个简单的应用程序,该应用程序可以输入日期和用户输入的名称,然后提醒您朋友的生日。我无法解决的一个问题是如何每天检查今天的生日。
我已经尝试了WorkManager和AlarmManager,并且NEITHER OF THEM将执行所需的代码。所有需要做的就是在java类中执行一个方法,然后将构建并发送通知。
这是设置提醒的代码。提醒中的内容无关紧要,所有要做的就是每天运行一次RemindWorker
public void setReminder() {
Calendar currentDate = Calendar.getInstance();
Calendar dueDate = Calendar.getInstance();
dueDate.set(Calendar.HOUR_OF_DAY, 0);
dueDate.set(Calendar.MINUTE, 0);
dueDate.set(Calendar.SECOND, 0);
if(currentDate.after(dueDate)) {
dueDate.add(Calendar.Hour, 24);
}
long timeDiff = dueDate.getTimeInMillis() - currentDate.getTimeInMillis();
Log.d("ReminderTests", "Time until next alarm//alarm set: " + timeDiff);
OneTimeWorkRequest timedRemindRequest = new OneTimeWorkRequest.Builder(RemindWorker.class)
.addTag("CALENDAR_BASED_PERIODIC")
.setInitialDelay(timeDiff, TimeUnit.MILLISECONDS)
.build();
WorkManager.getInstance().enqueueUniqueWork("REMIND_WORK", ExistingWorkPolicy.REPLACE, timedRemindRequest);
}
}
打开应用程序时首先调用它。在RemindWorkr类的末尾,setReminder();再次被调用,开始循环。
当手机打开并插入计算机(以及打开的应用程序)时,RemindWorker会正常启动并提醒用户。应用程序退出后不久(甚至没有清除,只是我打开了另一个应用程序)就什么也没有发生。不会发出提醒。