Стабильная версия Android WorkManager


Jetpack — это набор библиотек, которые должны упростить использование Android. Проблема в том, что делать, пока они становятся пригодными для использования. Хорошая новость в том, что WorkManager теперь считается стабильным.

Программирование под Android — это забавная смесь программирования на Java с множеством дополнений и альтернатив. Одна из проблем с этим заключается в том, что API представляет собой огромный беспорядок, и выяснить, как лучше всего что-то сделать, обычно сложно, а иногда и невозможно. В частности, есть несколько способов создания многопоточной программы, особенно такой, которая должна работать в фоновом режиме. На этом этапе вы вполне можете сказать: да, это сложная и изощренная проблема, но поскольку графический интерфейс Android является однопоточным, как и большинство графических интерфейсов, важно, чтобы для всех приложений, кроме простейшего, вы перешли на несколько потоков. Что-то столь банальное не должно быть таким уж трудным.
Откройте для себя WorkManager 1.0, решение почти всех наших многозадачных задач. Это простой в использовании. Просто создайте подкласс Worker и начните настраивать его, переопределив doWork. Вы можете установить ограничения на то, как вы хотите, чтобы Worker запускался — мощность, доступность сети и т. Д. Возможность указать условия, необходимые для запуска, является самым большим упрощением. Ваш экземпляр Worker будет запущен автоматически и перезапущен, если он должен быть приостановлен по какой-либо причине. Вы можете настроить одноразовый запрос или периодическое планирование.
Вы можете познакомиться с линейкой «компания» из следующего промо-ролика, который является неплохим введением в WorkManager:

Это хорошее введение, но я хотел бы обратить ваше внимание на блок-схему, кратко показанную в начале видео:

Все еще немного сложный беспорядок, не так ли? И что еще хуже, если вы посмотрите на сервис Foreground, вы найдете его еще более запутанным:
«Если вы должны выполнять работу вне основного потока, но только пока пользователь взаимодействует с вашим приложением, вам следует вместо этого создать новый поток. Например, если вы хотите воспроизвести музыку, но только во время выполнения вашего действия, вы можете создать поток в onCreate (), запустить его в onStart () и остановить его в onStop (). Также рассмотрите возможность использования AsyncTask или HandlerThread вместо традиционного класса Thread. Дополнительные сведения о потоках см. в документе «Процессы и потоки». .
Помните, что если вы все же используете службу, она по-прежнему выполняется в основном потоке вашего приложения по умолчанию, поэтому вам все равно следует создать новый поток внутри службы, если он выполняет интенсивные или блокирующие операции ».
Если вы работаете с Java, вы можете распознать низкоуровневые команды многопоточности, но как насчет остальных? Теперь вам также нужно добавить сопрограммы Kotlin в качестве возможного решения.

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

Майк Джеймс — автор книг «Программирование Android в Kotlin: Начиная с приложения» и «Программирование Android в Java: Начиная с приложения», 3-е издание, посвященное Android Studio 3.


Добавить комментарий