Подтвердить что ты не робот

Использование планировщика заданий в Android API <21

Я смотрел учебник по планированию Vogella. В нем упоминается API Job Scheduler, который был представлен в API 21 Android. Мой вопрос в том, может ли он реализоваться в API ниже 21 (Lollipop), но не менее, чем Android версии 3 (Honeycomb)?

4b9b3361

Ответ 1

с этого момента (после ввода-вывода 2015), вы также можете использовать новый GcmNetworkManager. Как его использовать и как это работает, здесь описывается https://developers.google.com/cloud-messaging/network-manager

Он делает много классных вещей, как будто он сохраняет ваши задачи за счет перезагрузки. На Lolipop он использует JobScheduler, на пре-Lolipop он использует свою собственную реализацию.

EDIT:

Пример кода о том, как его использовать: https://github.com/jacktech24/gcmnetworkmanager-android-example

Ответ 2

В Evernote имеется очень приятная и мощная библиотека планировщика заданий. Он использует лучший метод на каждом уровне SDK и дает вам один очень чистый и элегантный интерфейс для планирования и запуска заданий.

Ответ 3

Рекомендуемый подход для устройств с предварительным леллипопом заключается в использовании https://github.com/firebase/firebase-jobdispatcher-android#user-content-firebase-jobdispatcher-

Подробнее о https://developer.android.com/topic/performance/scheduling.html#fjd

Firebase JobDispatcher - это open-source библиотека, которая предоставляет API, подобный JobScheduler в Android Платформа. Firebase JobDispatcher служит Уровень совместимости JobScheduler для приложений, ориентированных на версии Android ниже 5.0 (уровень API 21).

Firebase JobDispatcher поддерживает использование сервисов Google Play как реализация для отправки (выполнения) заданий, но библиотека также позволяет вам определять и использовать другие реализации: например, вы может решить использовать JobScheduler или написать собственный собственный код. Из-за этой универсальности мы рекомендуем использовать эту Firebase JobDispatcher, если ваше приложение нацелено на версию Android ниже 5.0 (Уровень API 21).

Для получения дополнительной информации о Firebase JobDispatcher см. его документацию и исходный код.

Ответ 4

Существует несколько методов запуска "заданий" pre-lollipop.

Как уже упоминалось, вы можете использовать библиотеку JobSchedulerCompat, но эта библиотека имеет огромную разницу по сравнению с Lollipop API по умолчанию:

На заданиях Lollipop собраны и запланированы для всех приложений одновременно. Однако библиотека не имеет доступа к другим данным приложений и поэтому не может комбинировать задания из двух разных приложений с помощью библиотеки.

Другой вариант, который вы можете попробовать, это API AlarmManager. Этот API можно использовать для планирования заданий, но одно отличие состоит в том, что AlarmManager не имеет ограничений, кроме времени для выполнения заданий.

Так как KitKat API AlarmManager также выполняет задания, когда они не запланированы с помощью "точных" методов. Прежде чем задания KitKat не будут отгружены.

Если ваша цель - синхронизировать данные, может оказаться полезным API-интерфейс Sync-Adapter: Sync-Adapter

Ссылки: AlarmManager, JobSchedulerCompat

Ответ 5

Вы можете взглянуть на библиотеку JobSchedulerCompat.

Однако, как отмечают авторы, есть причина, по которой JobScheduler доступен только с Lollipop и далее, поэтому обратите внимание на это. Цитирование:

Однако эта библиотека не была хорошо протестирована, поэтому я бы посоветовал не используя в производстве в это время. Нет никаких гарантий того, что это не сработает батарея или не взорвется ваше устройство.

Ответ 6

Обратитесь эту ссылку об обзоре API Android N Preview.

GCMNetworkManager, входящая в состав Google Play Services, которая предлагает аналогичное планирование работы с совместимостью в устаревших версиях Android.