Как удержать связь с сервером в реал тайм в android 8?
Всем привет!
Есть программа, которая держит связь с firebase в фоновом сервисе (если система убивает сервис, то AlarmManager, через каждые 2 минуты проверяет, запущена ли служба, если не запущена, то запускает). И когда меняются данные в firebase, на устройство моментально приходят новые данные и система посылает уведомление. Все работает отлично.
Но как известно, Android 8 ограничил возможности фонового сервиса, в соответствии чего нужна альтернатива. На stackoverflow советуют JobScheduler, типа самый лучший способ. Но, как я понял, JobScheduler запускает задачу через определенное количество времени, т.е. это не совсем реал тайм, данные в firebase могут измениться сейчас, а устройство с JobScheduler отреагирует скажем через настроенный интервал, т.е. например через 2 минуты. Как сделать так, чтобы был в реал тайме? Интересно, как работают тот же ватсап и другие подобного рода приложения. Как постоянно слушать firebase?
Из вашего ответа, я открыл для себя Firebase. Но теперь встал вопрос об удержании постоянной связи с firebase. Или у firebase есть собственный механизм доставки? Сейчас нашел эту страницу, изучаю https://firebase.google.com/docs/cloud-messaging/a...
Сергей Горностаев, спасибо! Вот я гоню, сервис к нему прикрутил, BroadcastReceiver настроил на автозапуск после ребута, а нужно было всего-то внимательнее прочесть документацию))
Реалтайм это не про пользовательские мобильные ОС и не про мобильную связь.
В общем случае это решается через push. Можно ещё использовать foreground service. Но в любом случае нужно понимать, что ваш сервис контролирует ОС и может его прибить.
Почему же нет? Повесить сокет и вот вам реал тайм, причем без разницы, мобильная сеть или вай фай. Foreground Service не подходит, иначе ватсапы, вайберы, разные там скайпы показывали бы неубираемое активное уведомление. Из этого легко предположить, что существует решение лучше, которое я пока не знаю
Приложение стоит на моем устройстве, андроид 6.0. Работает стабильно, расход батареи без изменения: каким был до установки, таким и остался. Проверял на 2G, 3G и 4G, все стабильно.
Хотя, сейчас посмотрел в статистике расхода батареи, там стоит 5%. Когда как ватсап - 7%, фейсбук - 6%. Но, мое приложение получает уведомление только до обеда, поэтому наверное нужно сделать ограничение запуска службы только в заданное время. 5% как-то много получается ...