首页 > 解决方案 > Worker manager doWork()方法无法执行,但是onStartWork()被多次调用

问题描述

我正在尝试在应用程序在 1 分钟后启动时安排工作我需要做一些工作不管应用程序是否仍在前台但我需要这样做,但我不知道为什么我的 doWork 方法不运行。但是多次调用 onStart 方法

private void sacduleThePaddingNotifaction() {
    OneTimeWorkRequest postNotationWithDelay =
            new OneTimeWorkRequest.Builder(PostNotificationWork.class)
                    .setInitialDelay(1,TimeUnit.MINUTES)
                    .build();
    WorkManager.getInstance().enqueue(postNotationWithDelay);


}

我的工人阶级

public class PostNotificationWork extends Worker {
    @Override
    public void onStartWork(@NonNull WorkFinishedCallback callback) {
        Log.d("PostNotificationWork: ","onStartWork");//this called many times, some time 4 time 
    }

    @NonNull
    @Override
    public Result doWork() {

        Log.d("PostNotificationWork: ","Posting notification");
        return Result.SUCCESS;
    }
}

我在用def work_version = "1.0.0-alpha07"

标签: androidandroid-jetpackandroid-workmanager

解决方案


  • 尝试更新到这个版本 def work_version = "1.0.0-alpha06" implementation "android.arch.work:work-runtime:$work_version"
  • 消除 @Override public void onStartWork(@NonNull WorkFinishedCallback callback) { Log.d("PostNotificationWork: ","onStartWork");//this called many times, some time 4 time }
  • 最后再试一次

推荐阅读