public class DemoWork extends Worker { public static final String TAG = DemoWork.class.getSimpleName(); private Context context; private WorkerParameters workerParams;
public DemoWork(@NonNull Context context, @NonNull WorkerParameters workerParams) { super(context, workerParams); this.context = context; this.workerParams = workerParams; } @NonNull @Override public Result doWork() { Log.e(TAG, "doWork----------**-----------: 后台任务执行了"); // 接收Activity传递过来的数据 final String dataString = workerParams.getInputData().getString("data"); Log.e(TAG, "doWork: 接收Activity传递过来的数据:" + dataString); // 反馈数据 给 Activity // 把任务中的数据回传到activity中 // Data outputData = new Data.Builder().putString("data", "执行完任务将结果和数据回传给Activity").build(); @SuppressLint("RestrictedApi") Result.Success success = new Result.Success(); // return new Result.Failure(); // 本地执行 doWork 任务时 失败 // return new Result.Retry(); // 本地执行 doWork 任务时 重试 // return new Result.Success(); // 本地执行 doWork 任务时 成功 执行任务完毕 return success; } }
单次执行及延迟调用的示例
1 2 3 4 5 6 7
//工作通过把WorkRequest传入WorkManager中进行定义。使WorkManager可以调度任何工作; OneTimeWorkRequest oneTimeWorkRequest = new OneTimeWorkRequest.Builder(DemoWork.class) .setInitialDelay(10,TimeUnit.SECONDS) .build();