java - 在我的活动中执行定期工作请求时,工作管理器向 Worker 类发送错误的输入数据。如何解决?
问题描述
我正在使用Work Manager在我的活动中执行定期工作请求,并希望使用 将数据从我的活动发送到 Worker 类。我正在向我的工人班发送航班号和出发日期,但是,即使我在我的工人班中阅读航班号,它也无法识别我的工人班中的航班号并且打印或仅打印出发日期。为什么它不读取航班号而只读取出发日期?下面是代码 -setInputData()
null
活动
final PeriodicWorkRequest periodicWorkRequest1 = new PeriodicWorkRequest.Builder(SendNotification.class,15, TimeUnit.MINUTES)
.setInputData(new Data.Builder()
.putString(SendNotification.FLIGHTNUMBER, flightNumber)
.putString(SendNotification.DATE, departure_date).build())
.build();
WorkManager workManager = WorkManager.getInstance(FlightDescriptionActivity.this);
workManager.enqueue(periodicWorkRequest1);
workManager.getWorkInfoByIdLiveData(periodicWorkRequest1.getId())
.observe(FlightDescriptionActivity.this, new Observer<WorkInfo>() {
@Override
public void onChanged(@Nullable WorkInfo workInfo) {
if (workInfo != null) {
Log.d("periodicWorkRequest", "Status changed to : " + workInfo.getState());
}
}
});
类扩展 Worker
public class SendNotification extends Worker {
public static final String FLIGHTNUMBER="";
public static final String DATE = "";
public SendNotification(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
}
@RequiresApi(api = Build.VERSION_CODES.M)
@NonNull
@Override
public Result doWork() {
String flightnumber = getInputData().getString(FLIGHTNUMBER); //this gets read as data, what can be the reason?
String date = getInputData().getString(DATE);
sendNotification(flightnumber,date); //it prints date for flightnumber as well, and sometimes it just passes null data
return Result.success();
}}
我坚持了很长时间,任何帮助将不胜感激
解决方案
通过更新以下代码尝试一下
workManager.enqueue(periodicWorkRequest1);
至
workManager.enqueueUniquePeriodicWork("check_notification", ExistingPeriodicWorkPolicy.REPLACE, periodicWorkRequest1);
推荐阅读
- tensorflow - 让keras LSTM层接受两个输入?
- javascript - 用于导入绑定的 ES6 语法
- python - + 不支持的操作数类型:'int' 和 'list' - python
- graphics - 简单的 3d 插值,例如海绵变形或热传导
- vba - VBA:具有多个值的变量(文本)
- angular - 如何向我的 Angular 应用程序中的模块添加依赖项?
- python - 在 Django 项目中设置日志文件最大大小
- knockout.js - 淘汰赛 - 具有启用功能的 Foreach 功能
- java - STS 无法识别 Lombok 注释
- python - 使 Python seaborn 热图更大