如何在特定时间排队 WorkManager OneTimeWorkRequest

我有一个场景,我必须在特定时间使用 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);


哔哔one
浏览 364回答 2
2回答

繁星点点滴滴

我想我找到了一个简单有效的解决方案。它工作 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);主要逻辑在delayToPass = currentTime (in Millis) - specificTimeToTrigger (in Millis)

Qyouu

接受的答案是准确的,但我认为有一个小细节会误导delayToPass = currentTime (in Millis) - specificTimeToTrigger (in Millis) 我,这在我看来是行不通的,应该是:delayToPass = specificTimeToTrigger (in Millis)-currentTime (in Millis)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java