Как правильно получать данные с сервера?

Хорошо, чтобы объяснить, что у меня есть сервер на Java, который получает данные из программы C++, над которой я не могу контролировать. Таким образом, данные передаются по TCP / IP, и сервер Java просто получает их. Объем входящих данных огромен, и они поступают с очень высокой скоростью, просто представьте, что терминал очень быстро печатает множество строк ... Мне не нужно получать все это, просто как можно больше было бы здорово ..

Теперь мне нужно отправить эти данные на устройство Android и отобразить их. Я понятия не имею, как лучше всего подходить к этому.

В настоящее время я проверяю связь с сервером со своего устройства Android каждые 50 мсек с помощью исполнителя. Затем я использую обработчик для отображения данных. Я уже размещал здесь вопрос с кодом: связанный вопрос.

Очевидно, что приложение для Android должно будет проверить связь во время работы приложения, поэтому я не могу избежать сценария while(true).

Я прочитал около 100000000 способов реализовать параллелизм в Android, и я не знаю, что для этого выбрать.

  • Я пробовал простые Threads, с ними было сложно справиться.
  • Я сейчас использую ExecutorService
  • Я тоже читал про ScheduledExecutorService, но им нужно время продолжительность правильно? Мое приложение может работать 5 часов, 5 минут или 5 годы.
  • Я тоже читал о HandlerThreads, но не уверен, что они идеально подходят для этот сценарий.

Любая помощь была бы замечательной.

Может быть, этот вопрос лучше для этого: softwareengineering.stackexchange.com?

Jure 27.06.2018 13:40

На самом деле кажется, что вы хотите писать сервис на Android. В этой службе есть много вариантов, но если вы постоянно ждете данных на мобильном устройстве, то ServerSocket можно оставить открытым для получения данных по мере их поступления, пока вы не закроете его.

Jay Snayder 27.06.2018 13:51

вы можете использовать "socket io" или "firebase notification"

Karmelina Michael 27.06.2018 13:56

@JaySnayder, как я сейчас делаю? ExecutorService? У меня уже есть установка и открытие Socket, а также InputStreamReader для получения всех

Trt Trt 27.06.2018 14:01

@KarmelinaMichael Может ли socket.io получать такой большой объем данных?

Trt Trt 27.06.2018 14:04

Этот вопрос здесь не по теме, потому что ответы основаны на мнениях. @Jure прав, попробуйте там

Marc Estrada 27.06.2018 14:23

@MarcEstrada это мнение основано? должен быть 1 правильный ответ ..

Trt Trt 27.06.2018 14:26

Когда заголовок начинается с «Каков наилучший способ», это теперь основано на мнении, поскольку есть много решений одной проблемы, лучшее или худшее, есть ответы, основанные на мнениях.

Marc Estrada 27.06.2018 14:30

@MarcEstrada Тогда я обновил заголовок

Trt Trt 27.06.2018 14:43

@TrtTrt проверьте этот ответ

Karmelina Michael 27.06.2018 15:07

@KarmelinaMichael вы что-то связали?

Trt Trt 27.06.2018 15:11
stackoverflow.com/a/12978658/9228777
Karmelina Michael 27.06.2018 15:24
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
12
101
0

Другие вопросы по теме