abler98
@abler98
Software Engineer

Как правильно поступить?

Задам два вопроса в одном, если вы не против.

- Вопрос №1
Нужна необходимость синхронизировать данные с сервером при запуске приложения. Делать это нужно в фоне, желательно с низким приоритетом.

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

Или всё же лучше прямо из Activity это делать?

- Вопрос №2
Приложение будет общаться с сервером посредством сокетов, т.е. все события (новые сообщения, оповещения, обновление данных и т.д.) будут вещаться через socket-сервер.

Для этого, как я понимаю, нужно создать сервис, который будет всё время запущен на устройстве. Почитав немного в интернете о таком подходе, ставится понятно - это не есть хорошо как минимум по двум причинам: Android может убить этот сервис; такой сервис будет нагружать систему, в итоге получим расход батареи + понижение производительности.

Тут меня посетила мысль использоваться FCM. Вроде как есть возможность передавать любые данные. Вопрос вот в чём: действительно ли можно заменить собственный socket-сервер решением от Google? Есть ли минусы у FCM?
  • Вопрос задан
  • 211 просмотров
Решения вопроса 1
@peacemakerv
Разработка под Android
Все зависит от того, что юзер должен делать: сидеть и тупить в экран, ожидая окончания синхронизации, или же именно параллельно что-то делать. Если параллельно - то делай в сервисе, в фоне.
FCM передает за один пакет до 4 килобайт текста, не "слишком моментально", но при небольшой нагрузке (кол-ве запросов в секунду) - бесплатно.

Ну, а нагрузка на Андроид - так любые клиент-серверные системы работают точно также, мессенджеры, клиенты сайтов.... И у всех foreground сервисы, которые системой не убиваются.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы