Мне нужно, чтобы служба работала в фоновом режиме. Эта служба используется для поддержания соединения Socket.IO/MQTT. В версиях, предшествующих Android O, не было проблем с поддержанием работоспособности службы, но в Android O это невозможно из-за ограничения фонового исполнения.
Есть ли способ сохранить работу служб, кроме службы переднего плана?
Ограничение на выполнение в фоновом режиме было сделано специально для противодействия сильному разряду батареи нескольких сокетов. В противном случае прибегайте к периодической работе.
Ваша служба может работать в фоновом режиме для 5 секунд, прежде чем вам нужно будет прикрепить к ней уведомление. Возможно, вы захотите прочитать все о Фоновые ограничения Android O
вы решаете эту проблему? @Mariano Cordoba
@RevathiManoharan нет. Я использую службу переднего плана для постоянных подключений и workmanager для задач, которые выполняются с фиксированной скоростью.
Хорошо, давайте попробуем также jobIntent. Но мое устройство redmi note pro работает, когда приложение полностью закрыто, я попытался нажать уведомление, затем мое приложение проснулось .. Это было достигнуто без использования намерения работы здесь, я использовал только startForegroundService. Но тот же сценарий не работает в One plus device.i думал, что это проблема конкретных устройств. так что вам нужно попробовать и другие устройства Android
В redmi note 5 pro, когда приложение находится в фоновом режиме, когда я пробовал push-уведомление, оно работает




Вы должны использовать Firebase Cloud Messaging для отправки данных с сервера, чтобы все приложения не открывали собственное соединение и не оставались активными, разряжая батарею и заполняя оперативную память без всякой пользы для пользователя. Ваше приложение не должно быть исключением.
Для коротких соединений (минуты) или пользовательских сеансов (также минут, если пользователь не остается активным дольше), служба переднего плана может быть решением.
Из любопытства, как вы хотите использовать «постоянное соединение»?
Мне нужно отслеживать присутствие пользователя. Я не думаю, что FCM поможет в этом случае, вероятно, лучший выбор - использовать службу переднего плана.
Что вы считаете «присутствием пользователя»?
Кроме того, действительно ли вам нужно, чтобы его отправляли через Интернет в режиме реального времени (я имею в виду секунды, которые все еще зависят от доступности сети)?
Под присутствием я подразумеваю, находится ли пользователь в сети или нет. И да, мне нужно, чтобы это было почти в реальном времени.
Это не ответ на мой первый вопрос. Я могу перефразировать это так: когда вы считаете, что пользователя больше нет в сети, а когда вы считаете, что он снова в сети?
Неа. Вам понадобится постоянное уведомление в качестве службы переднего плана, чтобы она постоянно работала.