Android Work Manager против служб?

В моем приложении для Android у меня есть несколько служб намерений, которые запускаются одна за другой, и самая первая служба намерений запускается трансляцией. Я наткнулся на Менеджер по работе несколько дней назад, и мне очень понравилась простота классов Worker и WorkManager. Каковы плюсы и минусы Work Manager по сравнению с обычными службами намерений? Должен ли я переключиться на менеджера по работе сейчас, учитывая тот факт, что в будущем мне, возможно, придется писать больше сервисов для намерений? Также какой вариант поможет мне легко протестировать код?

Вам нужен этот api для отображения уведомлений?

IgorGanapolsky 18.02.2020 19:12
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
43
1
19 362
1

Ответы 1

WorkManager имеет следующие функции:

  • Предоставляет задания, которые могут пережить процесс смерти
  • Он может разбудить приложение и процесс приложения для выполнения работы, тем самым гарантируя, что работа будет выполнена.
  • Позволяет наблюдать за статусом работы и создавать сложные цепочки работы
  • Позволяет объединять работы в цепочку, что позволяет разделять большие объемы работы на небольшие работы и выполнять их на основе различных ограничений.
  • Изящно управляет режимом ожидания или другими ограничениями, налагаемыми ОС.

Ниже приведены случаи, когда это было бы полезно:

  • Выполнение длительных фоновых задач, таких как загрузка мультимедиа
  • Разбор и хранение данных в базе данных.
  • Критические задачи, необходимые для выживания в процессе смерти

Should i switch to work manager now considering the fact that i may have to write more intent services in the future?

В большинстве случаев он должен заменить IntentService, но вы должны тщательно обдумать его, прежде чем использовать. Возможно, IntentService поначалу был не лучшим выбором.

WorkManager не отвечает на все фоновые задачи. НАПРИМЕР. Вы не должны использовать его для обработки платежей, так как он не должен пережить смерть процесса, и эту задачу необходимо выполнить немедленно. Рассмотрите возможность использования службы переднего плана. Также не рекомендуется использовать их для анализа данных и содержимого представления.

Вам действительно нужно взвесить, нужны ли вам его возможности, прежде чем использовать. Поскольку Google почти полностью меняет способ написания кода, WorkManager станет решением наших проблем с фоновой обработкой. Безусловно, это будет наиболее важный вариант, поскольку он абстрагирует обработку нескольких ограничений, накладываемых ОС. Вам следует подумать об использовании его для будущих реализаций.

Also which option would help me test the code easily?

Google также предоставил библиотеку тестирования, которая упрощает тестирование WorkManager. Он все еще находится в стадии разработки, но перед выпуском должен стать более мощным.

Привет, поскольку метод doWork () синхронизируется, есть ли способ выполнить некоторую асинхронную работу с RxJava или нет?

Mehdi Jahed Manesh 22.05.2018 09:12

@MehdiJahedManesh doWork() будет выполняться в фоновом потоке.

Sagar 22.05.2018 14:09

@Sagar, допустим, я хочу периодически поработать в своем приложении. Я могу напрямую использовать PeriodicWorkRequest, не беспокоясь о том, работает ли приложение процесса или нет? Я имею в виду, что WorkManager обеспечивает то же поведение, что и служба, в отношении продолжения, даже если приложение / процесс убит? Спасибо!

Nicolas Jafelle 07.06.2018 20:30

@NicolasJafelle Да. Вы можете использовать PeriodicWorkRequest. Задача гарантированно запускается, даже если ваше приложение принудительно завершено или устройство перезагружено.

Sagar 08.06.2018 01:28

Есть ли причина использовать IntentService в наши дни?

IgorGanapolsky 18.02.2020 19:11

А как насчет критических загрузок, которые должны выполняться, скажем, каждые 5 минут? Потому что иногда рабочие приостанавливаются, если пользователь очень долго не открывает приложение. В таком случае разумно ли иметь услуги или работников?

Anirudh Ganesh 13.11.2020 19:59

Другие вопросы по теме