2016-04-15 4 views
2

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

Когда приложение запускается, я проверяю общие настройки, чтобы узнать, вошел ли пользователь в систему или нет. При правильном входе я обновляю общий префикс boolean до true и устанавливаю его в false при выходе пользователя из системы.

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

Это лучший способ использовать строковый общий префикс и обновлять его при каждом запуске приложения или при изменении баланса. Или мне лучше использовать статическую переменную в моей основной деятельности, на которую можно ссылаться, когда пользователь переходит к фрагменту «Моя учетная запись».

Можно ли злоупотреблять общими предпочтениями?

+0

Вы можете использовать SharedPreference, но если вы хотите сохранить больше фокуса данных на базе данных. это хорошая практика – Kathi

ответ

0

Для одного значения, такого как баланс или имя пользователя, вы обязательно должны использовать SharedPrefereneces и OnSharedPreferenceChangeListener.

Для структурированных данных, таких как операции баланса вы должны обязательно использовать базу данных:

  • SQLite
  • Realm (NoSQL)
  • StorIO (SQLite обертка)

или некоторые ORM.

+0

Спасибо всем за совет. Я просто собираюсь написать баланс в общей привилегии, как было предложено. –

1

Простым и изящным решением является использование очень простой библиотеки TinyDB в android, которая представляет собой не что иное, как абстракцию по общим предпочтениям.

Вы можете инициализировать его в onCreate() методе вашей деятельности как это:

TinyDB tinydb = new TinyDB(this); 

В фрагменте, просто замените this с getActivity.

И затем использовать его как это:

tinydb.putString("userName", "john"); 
String currentUser = tinydb.getString("userName"); 

Надеется, что это помогает.

0

Вы должны хранить данные в SharedPreferences, а не глобальные переменные, поскольку при сбое приложения данные, обновляемые в статических глобальных переменных в разное время, теряются и данные по умолчанию остаются в нем.

Смежные вопросы