即使不在APP / APP中关闭,如何每小时在应用程序的后台运行一次进程

时间:2019-07-12 13:27:45

标签: java android

因此,我正在开发一个简单的应用程序,该应用程序可以输入日期和用户输入的名称,然后提醒您朋友的生日。我无法解决的一个问题是如何每天检查今天的生日。

我已经尝试了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会正常启动并提醒用户。应用程序退出后不久(甚至没有清除,只是我打开了另一个应用程序)就什么也没有发生。不会发出提醒。

0 个答案:

没有答案