Как установить максимальное время в jobInfo, чтобы после этого времени задание было отменено? - PullRequest
0 голосов
/ 04 мая 2018

У меня есть работаСервис график работы

JobInfo.Builder builder = new Builder(JOB_ID);
builder.setBackoffCriteria(/*initial 3 min*/ INI_TIME, /*increase exponential*/ JobInfo.BACKOFF_POLICY_EXPONENTIAL);
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED);

Я хочу установить максимальную задержку в 1 день, чтобы задание было отменено через 1 день, оно не отвечает всем требованиям. Я думал об использовании setOverrideDeadline(1d), но он выполнит работу в срок до 1 дня. и setTriggerContentMaxDelay работает так же. На самом деле мне интересно, разница между setTriggerContentMaxDelay и setOverrideDeadline

1 Ответ

0 голосов
/ 13 мая 2018

Ни setOverrideDeadline , ни setTriggerContentMaxDelay не являются правильными методами для использования в вашем сценарии. setTriggerContentMaxDelay используется только в том случае, если вы установили хотя бы один триггер URI контента с помощью addTriggerContentUri .

Если вы хотите отменить задание через 24 часа, я бы просто использовал AlarmManager, чтобы установить будильник для отмены задания, используя JOB_ID через 24 часа. Вы можете проверить, присутствует ли работа, используя:

JobScheduler mScheduler = (JobScheduler)
        mContext.getSystemService(Context.JOB_SCHEDULER_SERVICE);
for (JobInfo jobInfo : mScheduler.getAllPendingJobs()) {
    if (jobID == jobInfo.getId()) {
        // Cancel job
    }
}

Или вы можете отменить сигнал тревоги при выполнении вашей работы.

...