Страницы

Поиск по вопросам

четверг, 13 февраля 2020 г.

Где хранить текущие данные программы?

#java #ооп #android #архитектура


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

Остается либо property файл, либо SQLite, но меня смущает "тяжесть" этих способов.
Быть может есть еще какие варианты? Или все-таки стоит остановиться на SQLite?
    


Ответы

Ответ 1



Всё зависит от объёма и сложности ваших данных. Если вам достаточно хранить строки/массивы строк/числа, то можно пользоваться SharedPreferences: //сохраняем строку в файл внутренней директории приложения SharePreferences pref=PreferenceManager.getDefaultSharedPreferences(context); pref.edit().putString("key", "value").commit(); //получаем ранее сохранённые данные String savedData=pref.getString("key"); Если что-то сложнее, то да - используйте БД.

Ответ 2



Для этого придумали паттерн Singleton. @EBean(scope = Scope.Singleton) public class MySingltoneBean { //Тут прописываем геттеры сеттеры и прочие методы доступа к общим переменным } Теперь, когда нам надо воспользоваться нашими общими данными из Activity достаточно в нем определить @Bean MySingltoneBean mySingltoneBean;

Ответ 3



Я использую немного иной способ (самый легкий): создаю Java класс (не Activity, а просто класс) и в нем храню статические переменные. Так они доступным всем и отовсюду, а так же не зависят от жизненного цикла Activity. Главное в этом способе — простота. Пример: class Resources { public static int myNumber = 2334595; } Теперь переменную myNumber может получить и изменить любая активность (и фрагменты, и все остальные). Еще хорош способ, который описали выше. Но тот способ - для хранения данных, которые должны сохранится после закрытия приложения, а мой — во время работы приложения (Вы же сказали, что они создаются при запуске).

Комментариев нет:

Отправить комментарий