Я хочу загрузить определенные файлы с сервера при запуске приложения. Поэтому я попытался использовать Work Manager, который ставится в очередь из моего пользовательского класса Application. Но класс Worker не запускается, и состояние только ЗАВЕРШЕНО и не собираюсь Бежать . Ниже мой код:
Класс приложения:
@Override
public void onCreate() {
Constraints constraints = new Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
//.setRequiresStorageNotLow(true)
//.setRequiresBatteryNotLow(true)
.build();
OneTimeWorkRequest request = new OneTimeWorkRequest
.Builder(MyWorker.class)
//.setConstraints(constraints)
//.setInitialDelay(1,TimeUnit.SECONDS)
.addTag("download")
.build();
WorkManager.getInstance(getApplicationContext()).getWorkInfoByIdLiveData(request.getId()).observeForever(new Observer<WorkInfo>() {
@Override
public void onChanged(WorkInfo workInfo) {
if (workInfo == null) {
Log.d("download", "workInfo == null");
} else {
Log.d("download", "workInfo != null: " + workInfo.getState().toString());//This is giving ENQUEUED once..thats it
}
}
});
WorkManager.getInstance(getApplicationContext()).enqueue(request);
}
Класс MyWorker
public class MyWorker extends Worker {
public MyWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
}
@NonNull
@Override
public Result doWork() {
//Some file to download
}
}
build.gradle:
implementation "androidx.work:work-runtime:2.3.2"
То, что я пробовал:
Я попытался добавить интервал, а также удалить ограничения, но также, MyWorker не запускается.
Я видел много сообщений SOF, как указано ниже, но это не помогло мне:
Менеджер работника: не начинать работу в enqueue
Почему работники в менеджере работ все еще находятся в состоянии ENQUEUED?
Android WorkManager не запускает одного из двух запланированных работников