我的目标是每小时运行一次简单的任务。在应用程序启动时,我使用ExistingPeriodicWorkPolicy.KEEP标志注册一个独特的定期工作。
这是我的实现:
public class MyWorker extends Worker {
public MyWorker(Context context, WorkerParameters workerParams) {
super(context, workerParams);
// I don't do anyting with workerParams
}
public static void enqueueWork() {
Constraints constraints = new Constraints.Builder()
.setRequiresBatteryNotLow(true)
.build();
PeriodicWorkRequest request = new PeriodicWorkRequest
.Builder(MyWorker.class, 1, TimeUnit.HOURS)
.setConstraints(constraints)
.addTag("MyWorkerWork")
.build();
WorkManager.getInstance().enqueueUniquePeriodicWork("MyWorkerWork",
ExistingPeriodicWorkPolicy.KEEP, request);
}
@NonNull
@Override
public Result doWork() {
Log.i(TAG, "doWork");
return Result.success();
}
}
Run Code Online (Sandbox Code Playgroud)
我唯一打电话的地方enqueueWork()是Application#onCreate。
public class MyApplication extends Application {
@Override
public void onCreate() …Run Code Online (Sandbox Code Playgroud) 因此有一个新的构建器函数LiveData:
val someLiveData = liveData {
// do something
}
Run Code Online (Sandbox Code Playgroud)
谁能准确解释这个新的构建器功能解决了什么问题?它如何解决轮换问题?它与 Web 服务调用有何关系?
任何意见将不胜感激。提前致谢。