Par*_*tel 3 java android android-workmanager
我有一个场景,我必须在特定时间使用 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);
Run Code Online (Sandbox Code Playgroud)
我想我找到了一个简单有效的解决方案。它工作 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);
Run Code Online (Sandbox Code Playgroud)
主要逻辑在delayToPass = currentTime (in Millis) - specificTimeToTrigger (in Millis)