2 回答
![?](http://img1.sycdn.imooc.com/54584d6100015f5802200220-100-100.jpg)
TA贡献1803条经验 获得超3个赞
我想我找到了一个简单有效的解决方案。它工作 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)
![?](http://img1.sycdn.imooc.com/545868190001d52602200220-100-100.jpg)
TA贡献1786条经验 获得超11个赞
接受的答案是准确的,但我认为有一个小细节会误导delayToPass = currentTime (in Millis) - specificTimeToTrigger (in Millis)
我,这在我看来是行不通的,应该是:delayToPass = specificTimeToTrigger (in Millis)-currentTime (in Millis)
添加回答
举报