如何在特定时间将 WorkManager OneTimeWorkRequest 入队

2024-02-21

我有一个场景,我必须在特定时间使用 WorkManager 向用户发出通知。

我如何在特定时间安排工作,即使用户强制终止应用程序,它也应该显示。或应用程序未运行。

我当前的代码如下:

Data d = new Data.Builder().putInt(IntentConstants.SCHEDULE_ID, scheduleData.getScheduleID()).build();
OneTimeWorkRequest compressionWork =
    new OneTimeWorkRequest.Builder(ScheduleWorker.class)
        .setInputData(d)
        .build();
WorkManager.getInstance().enqueue(compressionWork);

我想我已经找到了一个简单且可行的解决方案。 100%有效。

我们必须获取当前时间(以毫秒为单位)以及触发它所需的特定时间(以毫秒为单位),然后您必须计算特定时间 - 当前时间。

我有我的解决方案(下面的工作代码):

Data d = new Data.Builder()
             .putInt(IntentConstants.SCHEDULE_ID, scheduleData.getScheduleID())
             .build();

long currentTime= System.currentTimeMillis();
long specificTimeToTrigger = c.getTimeInMillis();
long delayToPass = specificTimeToTrigger - currentTime;

OneTimeWorkRequest compressionWork =
                        new OneTimeWorkRequest.Builder(ScheduleWorker.class)
                                .setInputData(d)
                                .setInitialDelay(delayToPass, TimeUnit.MILLISECONDS)
                                .build();

WorkManager.getInstance().enqueue(compressionWork);

主要逻辑在延迟通过 = 当前时间(以毫秒为单位) - 具体触发时间(以毫秒为单位)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在特定时间将 WorkManager OneTimeWorkRequest 入队 的相关文章

随机推荐