Эта периодическая задача диспетчера работ не выполняется.
Для тестирования я сократил метод googleFitHelper.syncData
ниже, чтобы он имел доступ только к URL (посту) с использованием Volley
фреймворка.
manifest
имеет набор android.permission.INTERNET
.
У manifest
нет других параметров, связанных с задачей workmanager
.
Для проверки я пишу журнал на сервере при обращении к URL.
Я что-то упустил?
Примечание. Задача работает, как ожидается, как OneTimeWorkRequest
.
class MainActivty {
...
private void scheduleSyncJobService(){
SyncWorkManagerUtility syncWorkManagerUtility = new SyncWorkManagerUtility();
syncWorkManagerUtility.scheduleJob();
}
}
class SyncWorkManagerUtility {
private static final String TAG = SyncWorkManagerUtility.class.getSimpleName();
private static final String SYNC_WORK_JOB1 = "SYNC_WORK_JOB1";
void scheduleJob() {
Constraints constraints = new Constraints.Builder()
.setRequiresDeviceIdle(true)
.setRequiredNetworkType(NetworkType.CONNECTED)
.build();
PeriodicWorkRequest syncRequest =
new PeriodicWorkRequest.Builder(SyncWorkManagerService.class, 15, TimeUnit.MINUTES)
.addTag(SYNC_WORK_JOB1)
.setConstraints(constraints)
.build();
Log.d(TAG, "Scheduling Job " + SYNC_WORK_JOB1);
WorkManager.getInstance().enqueueUniquePeriodicWork(SYNC_WORK_JOB1, ExistingPeriodicWorkPolicy.REPLACE, syncRequest);
}
}
public class SyncWorkManagerService extends Worker {
...
@Override
public Result doWork() {
GoogleFitHelper googleFitHelper = new GoogleFitHelper(getApplicationContext());
googleFitHelper.syncData();
return Result.success();
}
}
public class GoogleFitHelper {
....
void syncData(){
String url="https://example.com/testbackgroundtask.php";
StringRequest strRequest = new StringRequest(Request.Method.POST, url,
responseString -> {},
error -> {}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
params.put("testdataA", "testdataA");
params.put("testdataB", "testdataB");
return params;
}
@Override
public Map<String, String> getHeaders() {
HashMap<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
return headers;
}
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
return super.parseNetworkResponse(response);
}
};
VolleyRequestQueue.getInstance(context).addToRequestQueue(strRequest);
}