Android Workmanager запускает задание в фиксированном процессе

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

Есть ли какое-либо решение для этого с использованием WorkManager или любым другим совместимым с API 14-28 способом?


person F43nd1r    schedule 14.08.2018    source источник
comment
Кто-нибудь поможет с вопросом, можно ли запустить диспетчер работы в отдельном процессе?   -  person Mahesh    schedule 14.09.2018
comment
stackoverflow.com/a/58857684/1275443   -  person SAURABH_12    schedule 14.11.2019


Ответы (3)


А как насчет этого подхода:


        <service
                android:name="androidx.work.impl.background.systemjob.SystemJobService"
                android:process=":worker"/>

Просто поместите объявление в свой манифест, и ManifestMerger создаст окончательный объединенный манифест с android:process=":worker" (worker - это имя неосновного процесса, может быть другим)

person ultraon    schedule 25.04.2019

Новое в WorkManager 2.5.0 - это модуль workmanager-multiprocess для решения этой проблемы. Вы можете реализовать это с помощью implementation "androidx.work:work-multiprocess:$work_version"

Чтобы использовать это, вы можете зарегистрировать новый WorkManager.Initializer, как описано на этой странице: https://developer.android.com/topic/libraries/architecture/workmanager/advanced/custom-configuration

Когда вы регистрируете этот инициализатор, ваши конфигурации должны включать вызов .setDefaultProcessName("com.example.app:processName"). Это заставит вызовы происходить в правильном процессе. Я тестирую это прямо сейчас, и, похоже, он работает, но я обновлю этот пост, если возникнут какие-либо проблемы.

person Scott Driggers    schedule 25.12.2020

взгляните на этот пример диспетчера работы для сетевых вызовов

person stevandoh    schedule 14.08.2018
comment
Похоже, это не влияет на то, в каком процессе он запускается. - person F43nd1r; 15.08.2018