Android WorkManager 未启动工作线程

adi*_*adi 9 android workmanagers android-workmanager androidx

我想在应用程序启动时从服务器下载某些文件。所以我尝试使用工作管理器,它从我的自定义应用程序类中排队。但是 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);
}
Run Code Online (Sandbox Code Playgroud)

我的工人类

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 
}
}
Run Code Online (Sandbox Code Playgroud)

构建.gradle:

implementation "androidx.work:work-runtime:2.3.2"
Run Code Online (Sandbox Code Playgroud)

我尝试过的事情:

我尝试添加一个间隔并删除约束,但是 MyWorker 也没有被触发。

我看过很多 SOF 帖子,如下所示,但它对我没有帮助:

工人经理:不在队列中开始工作

为什么工作管理器中的工作人员仍处于 ENQUEUED 状态?

Android WorkManager 不会触发两个计划工作线程之一