不从工作管理器调用doWork()方法

问题描述 投票:3回答:1

我正在尝试使用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()方法调用这个worker类。代码段在这里:

 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()方法也是如此。

有人可以指出,我做错了。

谢谢,阿林达姆。

android service android-workmanager
1个回答
0
投票

可能不是你的情况,但是当你使用setInputData()设置数据时,如果有效载荷/数据对象太大,可能无法调用doWork()

© www.soinside.com 2019 - 2024. All rights reserved.