Intereting Posts
События TextWatcher вызываются дважды Как уменьшить размер дизайнерского дизайна Android в Intellij Idea12? Откройте камеру по умолчанию на SurfaceView и запишите переднюю камеру Espresso startActivity, который зависит от намерения Eclipse не находит мое HTC Sensation Зачем использовать «обычные» фрагменты, если у вас есть пакет совместимости с Android? Что происходит с AsyncTask, когда запускающая активность остановлена ​​/ уничтожена, пока она еще запущена? Как создать пользовательский медиаплеер для воспроизведения пользовательского кодека в Android? Есть ли список разрешений экрана для всех Android-телефонов и планшетов на базе Android? Панель доступа (и ее дочерние элементы) из фрагмента? Наложение над ImageView на Android Com.android.camera.action.CROP устанавливает обои на Motorola Defy Есть ли способ сделать сжатие изображений и экономить быстрее на Android? Растровая круговая обрезка в андроиде Что такое фатальный сигнал 6 в logcat android

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

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

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

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

РЕДАКТИРОВАТЬ:

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

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

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

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

Firebase JobDispatcher – это библиотека с открытым исходным кодом, которая предоставляет 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 см. Его документацию и исходный код.

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

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

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

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

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

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

Ссылки: AlarmManager , JobSchedulerCompat

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

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

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

См. Эту ссылку в обзоре API Android N Preview.

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