Это не дубликат, так как моя проблема Wrong 1st argument type. Found: 'android.content.Context', required: 'androidx.lifecycle.LifecycleOwner'
, и я не получил никакого ответа, чтобы решить эту проблему. Я пытаюсь реализовать диспетчер работы в фоновом сервисе.
Я пытался преобразовать в AppCompatActivity, LifeCycleOwner, ... контекст, который сам по себе также не будет работать ...
ВотКод:
Constraints constraints = new Constraints.Builder()
.setRequiresCharging(true)
.build();
final Data data = new Data.Builder()
.putDouble(USER_LAT, maps.get(i).getUser_lat())
.putDouble(USER_LNG, maps.get(i).getUser_lng())
.putLong(MAP_ID, id)
.putString(METHOD, maps.get(i).getMethod())
.putString(STATUS, maps.get(i).getStatus())
.putString(RECIEVED_DATA, maps.get(i).getCreate_time())
.build();
final OneTimeWorkRequest oneTimeWorkRequest = new OneTimeWorkRequest.Builder(DatabaseToApiWorker.class)
.setInputData(data)
.setConstraints(constraints)
.setInitialDelay(delay, TimeUnit.SECONDS)
.build();
WorkManager.getInstance().enqueue(oneTimeWorkRequest);
WorkManager.getInstance().getWorkInfoByIdLiveData(oneTimeWorkRequest.getId())
.observe((LifecycleOwner) context, new Observer<WorkInfo>() {
@Override
public void onChanged(WorkInfo workInfo) {
if (workInfo != null)
Log.e("ServiceWorker",workInfo.getState().name());
if (workInfo.getState().isFinished())
{
if (workInfo.getState() == WorkInfo.State.SUCCEEDED){
Data data1 = workInfo.getOutputData();
Long id = data1.getLong(DatabaseToApiWorker.MAP_ID_WORKER,0);
appDatabase.getMapDAO().deleteIt(id);
Log.e("ServiceWorker", String.valueOf(id));
} else if (workInfo.getState() == WorkInfo.State.FAILED) {
Log.e("ServiceWorker", String.valueOf(id)+" Sending Failed");
}
} else {
Log.e("WORKER", String.valueOf(id)+" Failed");
}
}
});