Мобильное приложение, работающее при слабом интернет-соединении

Я хочу создать приложение для Android, которое должно работать со слабым подключением к Интернету или без подключения к Интернету.

Основная функция этого приложения заключается в сохранении и отправке данных, таких как фотографии и другая важная информация, на сервер. Моя проблема заключается в реализации этой системы в автономном режиме и в том, как построить эффективную синхронизацию между сервером и клиентом при работе со слабым интернет-соединением.

Спасибо


person Dorin    schedule 15.09.2017    source источник
comment
Итак... в чем вопрос. Мы не собираемся разрабатывать приложение для вас.   -  person Gabe Sechan    schedule 15.09.2017
comment
Я не хочу, чтобы вы разрабатывали приложение. Мне нужна полезная информация по этой проблеме, потому что я не смог найти что-то, что можно было бы эффективно реализовать.   -  person Dorin    schedule 15.09.2017
comment
может быть, использовать какую-то очередь для задач синхронизации? github.com/yigit/android-priority-jobqueue   -  person Rafal Malek    schedule 15.09.2017
comment
Я использую Парс-Сервер. Я сохраняю данные (с помощью saveInBackground или SaveEventually). Затем я прикрепляю его к фону (кеширую данные)   -  person letsCode    schedule 15.09.2017
comment
@ Дорин Нет, ты. Вы пришли сюда, не проделав никакой работы ногами, спрашивая нас, как сделать чрезвычайно сложную вещь из описания в 1 абзац. Вы даже близко не готовы задавать вопросы здесь.   -  person Gabe Sechan    schedule 15.09.2017
comment
@ Гейб, я признаю, что раньше не делал ничего подобного. Я хочу знать, как начать делать масштабируемое приложение. Читая об этой проблеме, я столкнулся с базой данных в реальном времени и мобильной платформой, но это платные решения. И я думаю, что реализовав это впервые самостоятельно у меня будет много шансов построить что-то неэффективное   -  person Dorin    schedule 15.09.2017


Ответы (1)


Надеюсь, это поможет. Вероятно, это не лучшее решение, но из-за отсутствия идей или решений (как вы упомянули) я пришел с этим.
У меня есть что-то подобное в одном приложении. Я отправляю данные в свою основную базу данных через веб-службы, поэтому я создал таблицу (SQLite) с 3 полями:
1) ServiceFunction (текст)
2) ServiceParameters (текст)
3) Обработано (Int, 1 или 0, по умолчанию 0)

Поскольку моим мобильным пользователям не нужно знать, была ли запись сохранена или нет, при каждом событии я сохраняю метод веб-сервиса. нужно вызвать и его параметры. При этом у меня есть своего рода очередь для того, что я должен отправить на свой сервер (база данных MySQL, веб-сервисы на C#)
У меня есть в фоновом режиме служба IntentService, работающая каждую минуту или около того, обрабатывающая эту «очередь». Я извлекаю все ожидающие записи (Processed = 0), выполняю метод веб-сервиса с его параметрами, и если обнаруживается ошибка, я прерываю цикл и регистрирую проблему, если все в порядке, я обновляю поле Processed на 1.

Эта логика работает без проблем, без потери данных или чего-то еще примерно на 150 устройствах, я отправляю от простых записей до данных изображения для хранения в базе данных (мы не обсуждаем практику хранения данных BLOB в Db или на FS)

Я надеюсь, что это дало вам общее представление о том, что вам нужно реализовать в своем решении.

person soqui    schedule 15.09.2017