2015-04-11 2 views
0

Я разрабатываю приложение, в котором храню свои данные в БД онлайн, используя HTTP POSTO и GET. Мне нужно реализовать некоторую надежность для моего программного обеспечения, поэтому, если пользователь нажимает кнопку, и нет соединения, данные должны храниться в чем-то (файл? Sqlite?), А затем, когда соединение снова включено, отправьте HTTP запрос на отправку данных.Надежность Android при отключении связи

Любые советы или куски кода, чтобы показать мне, как это сделать? Спасибо.

ответ

0

Звучит неплохо и довольно для меня. Просто иди.

Вы используете локальный sqlite db как «кеш». Чтобы это было просто, не применяйте в этой программе нормальный код. Просто используйте локальный db. Затем, отдельно, вы кодируете синхронизатор. Этот проверяет онлайн-соединение и синхронизирует локальную базу данных sqlite с удаленной базой данных, возможно, с mysql.

Это должно быть прекрасно для всех приложений, которые не требуют немедленного обмена данными с другими процессами все время.

Существует один улов: низкая производительность sqlite на больших наборах данных. Это проблема со всеми решениями для баз данных. Таким образом, этот подход, вероятно, применим только для небольших наборов данных в целом или если вы можете уменьшить использование локальной базы данных только в части общих данных, возможно, только в критичных по времени материалах.

Другим обходным решением может быть использование объединений по двум отдельным базам данных - локальному и удаленному. Но такие вещи действительно повышают сложность кода, поэтому подумайте трижды, если это действительно необходимо.

+0

Спасибо за ответ. Я не могу использовать sqlite для кэширования всегда, потому что моему приложению нужны немедленные обновления в онлайн-режиме. В других функциях не было бы проблем, если соединение отсутствует, но в той или иной функции мне нужна надежность, потому что пользователь мог бы потерять свои данные. Итак, решение, которое я подумал, похоже на ваше, создание sqlite DB (очень маленькие данные для управления), где я помещаю свои данные, и если есть соединение, я сохраняю свои данные там, а затем, где находится в сети, храните mysql db. – xcsob

+0

Это будет классический подход к кешу. – arkascha

+0

Другой вопрос: я создаю свой sqlite db для первого действия (для хранения информации локального пользователя). Я создаю таблицы в методе создания метода обработчика базы данных, поэтому таблицы создаются в первом действии. Теперь, как я могу получить один и тот же экземпляр БД в другом действии? – xcsob