Справочная информация:
Недавно мне пришлось перенести службу в JobIntentService (JIS) для поддержки ограничений фоновой службы Android 8.0.Эта служба регистрирует токен на моем сервере после того, как FirebaseInstanceIDService вызывает его.
Проблема:
У меня есть сетевой вызов, который должен быть сделан из JobIntentService (JIS).Все операции сетевого вызова обрабатываются с помощью Eventbus (EB).
Процесс выглядит следующим образом:
JIS -> request API (EB) -> {API Call Handler} -> Send Response (EB) -> JIS -> Handle response.
Проблема, как вы могли догадаться, заключается в том, что событие API запроса момента запускается, служба Intent завершает себя и не обрабатывает событие ответа.
Временное решение:
Я решил это грязным способом, вызвав Thread.sleep (400) сразу после запуска события. (APIна ответ требуется около 150 мс)
Это гарантирует, что JIS все еще будет в состоянии обработать ответ, к тому времени, когда событие ответа API достигнет.
Я хотел подтвердить, является ли это правильным подходом (так как для меня это было грубой силой) или существует более чистый подход.