|
3 / 3 / 0
Регистрация: 21.01.2013
Сообщений: 220
|
|
Обмен данными с сервером. Какой метод выбрать?13.06.2018, 14:32. Показов 3701. Ответов 13
Метки нет (Все метки)
Здравствуйте!
Мое приложение периодически обменивается данными с сервером после того, как пользователь его запустил. То есть, после запуска активити запускается не убиваемый сервис и он примерно каждые 5 мин подключается к серверу и обменивается данными (пару килобайт максимум). Так вот, интересует, какой метод обмена данными применить? Клиент-серверных приложений под ПК писал много, обычно устанавливал TCP соединение и обменивался данными в формате JSON. На андроиде выгодней делать так же, или там уже есть более продвинутые методы?
0
|
|
| 13.06.2018, 14:32 | |
|
Ответы с готовыми решениями:
13
Обмен данными с сервером Обмен данными с сервером Обмен данными с сервером. |
|
314 / 257 / 81
Регистрация: 31.10.2016
Сообщений: 619
|
|
| 13.06.2018, 16:47 | |
|
Как вы хотите (неубиваемый сервис), так не выйдет. Начиная с Nougat в андроиде теперь есть Doze mode, который пришлепнет ваши сервисы и в с этим ничего не сделаете. Так что советую начинать читать про это. Вот хорошая статья про то, зачем это сделано и что теперь применять. Там правда описывается последний компонент - WorkManager, который выпустил гугл и он пока в альфе, но он приходит на замену JobScheduler, JobDispatcher и AlarmManager. Я советую взять JobDispatcher.
А для связи с сервером используйте OkHttp. Он самый популярный и понятный. Добавлено через 2 минуты Однако, если у вас на устройстве нет Google Play Services, тогда нужно использовать evernote/android-job
0
|
|
|
3 / 3 / 0
Регистрация: 21.01.2013
Сообщений: 220
|
|
| 13.06.2018, 17:31 [ТС] | |
|
OkHttp - это немного не то. Он работает в режиме запрос-ответ. А мне нужно установить соединение и потом уже гонять данные туда-сюда.
0
|
|
|
3 / 3 / 0
Регистрация: 21.01.2013
Сообщений: 220
|
|
| 14.06.2018, 09:18 [ТС] | |
|
Решил делать через сокеты)))
Чтобы не создавать новую тему, задам здесь ещё вопросик: В моём приложении есть сервис, в сервисе есть поток (Thread) который занимается обменом данными по сети, при этом, мне каким-то образом надо передавать данные обратно в сервис. Если бы я это делал в активити, то там надо было это делать через runOnUiThread(), а как в случае с сервисами? Как из потока вызвать функцию, которая находится в сервисе? Добавлено через 10 минут Кстати, может есть реализации обычный tcp сокетов на колбеках, как это сделано вот здесь для вебсокетов https://medium.com/@ssaurel/le... 5f00aea988 ?
0
|
|
|
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
|
||||||
| 14.06.2018, 10:15 | ||||||
0
|
||||||
|
3 / 3 / 0
Регистрация: 21.01.2013
Сообщений: 220
|
|
| 15.06.2018, 12:07 [ТС] | |
|
Ок, следующий вопрос:
При всех этих андроидовских плюшках с энергосбережением, как мне организовать передачу данных на сервер каждые 5 минут? Т.е., пользователь запускает приложение, включает определенную функцию и после этого каждые 5 минут данные должны по мобильной сети передаваться на сервер. При этом, соответственно, после запуска приложения пользователь заблокирует тел и положит его в карман.
0
|
|
|
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
|
|
| 15.06.2018, 12:11 | |
|
никак
0
|
|
|
3 / 3 / 0
Регистрация: 21.01.2013
Сообщений: 220
|
|
| 15.06.2018, 12:12 [ТС] | |
|
а почему?))
0
|
|
|
314 / 257 / 81
Регистрация: 31.10.2016
Сообщений: 619
|
|||
| 15.06.2018, 16:03 | |||
|
0
|
|||
|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
|
| 15.06.2018, 16:13 | |
|
Если не упарываться сокетами, то отсылать простые запросы каждые 5 минут нет никаких проблем.
0
|
|
|
3 / 3 / 0
Регистрация: 21.01.2013
Сообщений: 220
|
|
| 15.06.2018, 16:15 [ТС] | |
|
А что значит "не упарываться сокетами"?
0
|
|
|
3 / 3 / 0
Регистрация: 21.01.2013
Сообщений: 220
|
|
| 18.06.2018, 10:17 [ТС] | |
|
Так, потестил. Сделал отправку GPS-позиции на сервер каждые 3 минуты убрав в настройках приложения экономию батареи. При этом данные отправляются нормально и на заряд батареи это особо не повлияло.
PS: передача была через мобильный инет
0
|
|
|
3 / 3 / 0
Регистрация: 21.01.2013
Сообщений: 220
|
||||||
| 01.07.2018, 00:25 [ТС] | ||||||
|
Появилась проблема с Doze mode и JobScheduler.
Запускаю на периодическое выполнение сервис JobService, в onStartJob запускается отдельный поток, который работает с сетью. Запускаю вот так:
Сервис запускается нормально, но к серверу подключиться не может в logcat вижу постоянно ошибки сокета, а как только нажимаю кнопку питания и загорается экран, соединение нормально устанавливается. Как можно решить эту проблему?
0
|
||||||
| 01.07.2018, 00:25 | |
|
Помогаю со студенческими работами здесь
14
Асинхронный обмен данными с сервером Обмен данными между клиентом и сервером Обмен данными между Сервером и Клиентом TCP
Обмен данными между клиентом и сервером на сокетах Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|