我需要每 12 小时从我的 Android 应用程序运行一次网络请求。我已经使用 Schedule Workmanager 来更新网络请求。它在我的 Android 三星 M40 设备和模拟器上完美运行,但是当我尝试使用其他一些设备(如华为、小米或 RealMe)时,它无法定期更新。
这是我的实现:
WorkManager mWorkManager;
mWorkManager = WorkManager.getInstance(context);
Constraints constraints = new Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build();
PeriodicWorkRequest periodicSyncDataWork =
new PeriodicWorkRequest.Builder(AccessTokenUpdateWorker.class, 12, TimeUnit.HOURS)
.addTag("ACCESS_TOKEN_SYNC_DATA")
.setConstraints(constraints)
.setInitialDelay(5, TimeUnit.MINUTES)
// setting a backoff on case the work needs to retry
.setBackoffCriteria(BackoffPolicy.LINEAR, PeriodicWorkRequest.MIN_BACKOFF_MILLIS, TimeUnit.MILLISECONDS)
.build();
mWorkManager.enqueueUniquePeriodicWork(
"ACCESS_TOKEN_SYNC_DATA",
ExistingPeriodicWorkPolicy.KEEP, //Existing Periodic Work policy
periodicSyncDataWork //work request
);
这是 AccessTokenUpdateWorker 代码:
public class AccessTokenUpdateWorker extends Worker {
private Context context;
private AppPreferenceHelper preferenceHelper;
public AccessTokenUpdateWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
this.context = context;
}
@NonNull
@Override
public Result doWork() {
preferenceHelper = new AppPreferenceHelper(context);
networkUpdate();
return null;
}
private void networkUpdate() {
....
}
}