Android Work Manager против служб?
В моем приложении для Android у меня есть несколько сервисов намерений, которые запускаются один за другим, и самый первый сервис намерений запускается трансляцией. Я наткнулся на Work Manager несколько дней назад, и мне очень понравилась простота классов Worker и WorkManager. Каковы плюсы и минусы Work Manager по сравнению с обычными сервисами? Должен ли я перейти на работу менеджера сейчас, учитывая тот факт, что мне, возможно, придется написать больше намеренных услуг в будущем? Кроме того, какой вариант поможет мне легко проверить код?
1 ответ
WorkManager поставляется со следующими функциями:
- Обеспечивает задачи, которые могут пережить процесс смерти
- Это может пробудить приложение и процесс приложения для выполнения работы, тем самым гарантируя, что работы будут выполнены.
- Позволяет наблюдать за состоянием работы и возможность создавать сложные цепочки работы
- Позволяет объединять работы, что позволяет разделить большой кусок работы на небольшие работы и выполнять их на основе различных ограничений.
- Изящно управляет режимом ожидания или другими ограничениями, налагаемыми ОС.
Ниже будут случаи, когда это будет полезно:
- Выполнение длительных фоновых задач, таких как загрузка медиа
- Разбор и хранение данных в базе данных.
- Критические задачи, которые должны пережить процесс смерти
Должен ли я перейти на работу менеджера сейчас, учитывая тот факт, что мне, возможно, придется написать больше намеренных услуг в будущем?
В большинстве случаев это должно быть заменой IntentService, но вы должны тщательно обдумать его использование. Вполне возможно, что IntentService был не лучшим выбором на первом месте.
WorkManager не отвечает на все фоновые задачи. Например, вы не должны использовать его для обработки платежей, так как он не должен переживать смерть процесса, и эти задачи должны быть выполнены немедленно. Рассмотрите возможность использования Foreground Service. Также не очень хорошая идея использовать их для анализа данных и содержимого представления.
Вам действительно нужно взвесить, нужны ли вам возможности, прежде чем использовать его. Так как Google практически пересматривает способ кодирования, WorkManager будет решением наших проблем с фоновой обработкой. Наверняка это будет самый важный вариант, поскольку он абстрагируется от обработки нескольких ограничений, накладываемых ОС. Вы должны рассмотреть возможность использования его для будущих реализаций.
Кроме того, какой вариант поможет мне легко проверить код?
Google также предоставил библиотеку тестирования, которая облегчает тестирование WorkManager. Он все еще находится в стадии разработки, но должен стать более мощным, прежде чем его выпустят.