Миграция на FCM и Android O - Продолжает ли запуск IntentService? - PullRequest
0 голосов
/ 02 июня 2018

В настоящее время я обновляю свой проект до targetSdkVersion 26 (Android O), а также мигрирую из GCM в FCM.

В настоящее время у меня есть:

  • A RegistrationIntentService который выбирает токен GCM и отправляет этот токен на сервер.

  • MainActivity, который проверяет наличие GooglePlayServices, а затем запускает RegistrationIntentService.

  • A MyInstanceIDListenerService, у которого есть метод onTokenRefresh, который просто запускает RegistrationIntentService.

Это было основано на выборке Google .

Чтобы перейти на FCM, мне просто нужно было изменить MyInstanceIDListenerService для наследования от FirebaseInstanceIdService, а RegistrationIntentService теперь использует FirebaseInstanceId для получения токена.

Кажется, все работает нормально,Я тестировал его в эмуляторе Android O.

Однако я знаю, что Android O ограничивает фоновые сервисы.Итак, мне было интересно, все ли нормально в приложении, которое нацелено на Android O, чтобы запустить RegistrationIntentService с MainActivity и MyInstanceIDListenerService.

Или я должен переместить код RegistrationIntentService в задачу?быть исполненным WorkManager?

Спасибо.

1 Ответ

0 голосов
/ 03 июня 2018

Нет прямого ответа на ваш вопрос, потому что это зависит от вашего варианта использования, особенно от того, сколько обработки вам нужно завершить, когда вызывается RegistrationIntentService.Вы все еще можете использовать IntentService в Oreo, когда ваше приложение находится на переднем плане или когда оно получает определенные события, такие как отправка данных.

Однако вы можете просто запустить IntentService в фоновом режиме, используя JobIntentService.enqueueWork() прямо из вашего onHandleIntent() метода, что означает, что он будет выполнен, когда ОС готова пожертвоватьресурсы для вас.В зависимости от объема работы вам все еще может потребоваться создать службу переднего плана, поскольку ваше приложение будет временно занесено в белый список, но не на длительный период.

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

...