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




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 или нет?
@MehdiJahedManesh doWork() будет выполняться в фоновом потоке.
@Sagar, допустим, я хочу периодически поработать в своем приложении. Я могу напрямую использовать PeriodicWorkRequest, не беспокоясь о том, работает ли приложение процесса или нет? Я имею в виду, что WorkManager обеспечивает то же поведение, что и служба, в отношении продолжения, даже если приложение / процесс убит? Спасибо!
@NicolasJafelle Да. Вы можете использовать PeriodicWorkRequest. Задача гарантированно запускается, даже если ваше приложение принудительно завершено или устройство перезагружено.
Есть ли причина использовать IntentService в наши дни?
А как насчет критических загрузок, которые должны выполняться, скажем, каждые 5 минут? Потому что иногда рабочие приостанавливаются, если пользователь очень долго не открывает приложение. В таком случае разумно ли иметь услуги или работников?
Вам нужен этот api для отображения уведомлений?