我正在尝试使用WorkManager进行服务器调用。所以,我写了下面的Worker类:
class ServerCallWorker extends Worker {
public ServerCallWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
Log.d("Testing", "ServerCallWorker constructor method" );
}
@NonNull
@Override
public Worker.Result doWork() {
Log.d("Testing", "doWork() method" );
return Worker.Result.SUCCESS;
}
}
我正在从活动的onCreate()方法中调用此工作者类。代码段在这里:
private void getLocationUpdate() {
Log.d("Testing", "inside Location Update");
WorkManager workManager = WorkManager.getInstance();
Log.d("Testing", "inside Location Update 222");
Constraints constraints = new Constraints.Builder().setRequiredNetworkType(NetworkType
.CONNECTED).build();
// PeriodicWorkRequest recurringWork = new PeriodicWorkRequest.Builder(FilterWorker.class, 15,
// TimeUnit.MINUTES).build();
OneTimeWorkRequest wrkReq = new OneTimeWorkRequest.Builder(ServerCallWorker.class).setConstraints(constraints)
.build();
Log.d("Testing", "inside Location Update 333");
workManager.enqueue(wrkReq);
Log.d("Testing", "inside Location Update 444");
}
现在,将调用getLocationUpdate()并正在打印日志。但是没有调用doWork()方法,因为没有日志显示。与ServerCallWorker()方法相同。
有人可以指出我做错了吗
谢谢, 阿林丹。
答案 0 :(得分:0)
可能不是您的情况,但是当您使用setInputData()
设置数据时,如果有效负载/数据对象太大,则可能无法调用doWork()
。