是的,在androidx.work库全面替代Firebase JobDispatcher之后,Android 12中已从SDK中移除了Firebase JobDispatcher。
如果你的应用程序正在使用Firebase JobDispatcher,建议你迁移到androidx.work库来实现后台任务调度。以下是将Firebase JobDispatcher迁移到androidx.work的代码示例:
首先,将Firebase JobDispatcher依赖项替换为androidx.work库:
//之前
implementation 'com.firebase:firebase-jobdispatcher:0.8.5'
//之后
implementation 'androidx.work:work-runtime:2.5.0'
接下来,将Firebase JobDispatcher的代码替换为androidx.work的代码,如下所示:
//之前
FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(context));
Job myJob = dispatcher.newJobBuilder()
.setService(MyJobService.class)
.setTag("my-job-tag")
.setConstraints(
Constraint.ON_ANY_NETWORK,
Constraint.DEVICE_IDLE,
Constraint.DEVICE_CHARGING
)
.setLifetime(Lifetime.FOREVER)
.setRecurring(true)
.setTrigger(Trigger.executionWindow(0, 60))
.setReplaceCurrent(false)
.build();
dispatcher.mustSchedule(myJob);
//之后
PeriodicWorkRequest.Builder myWorkBuilder =
new PeriodicWorkRequest.Builder(MyWorker.class, 1, TimeUnit.HOURS)
.setConstraints(
new Constraints.Builder()
.setRequiredNetworkType(NetworkType.UNMETERED)
.setRequiresDeviceIdle(true)
.setRequiresCharging(true)
.build()
);
PeriodicWorkRequest myWork = myWorkBuilder.build();
WorkManager.getInstance(context).enqueueUniquePeriodicWork(
"my-work-tag",
ExistingPeriodicWorkPolicy.REPLACE,
myWork
);
以上示例只是一个简单的示例,你仍需要调整约束条件、执行时间以及其他参数以适应你的需求。对于更复杂的情况,可以参考官方文档和代码示例进行