Страницы

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

пятница, 20 декабря 2019 г.

Android: Как правильно хранить данные?

#ооп #android #java


Здравствуйте!
Меня интересует такой вопрос: как правильно организовать хранение часто используемых
данных? У меня есть 3 коллекции, данные которые они хранят используются для вывода
нескольких ListView. Изначально я запихнул коллекции в статичные переменные в базовую
активити и они были доступны отовсюду. Сейчас я переделал эту схему на выборку из базы,
каждый раз когда эти данные требуются, и вот не пойму, правильно я сделал, или хранение
в статических переменных это нормальная практика для подобных задач?    


Ответы

Ответ 1



Глобальные переменные зло, если только с ними неправильно обращаться. По самой сути явления всегда есть переменные, которые должны быть глобальными - скажем хэндлер к БД (или если угодно хэндлер к DAO) - он по сути своей глобален - нравится это кому то или нет. Идеальным местом для хранения таких глобальных вещей является объект Application, который является естественным синглтоном для Android аппликации. Надо декларировать в манифесте кастомный Application класс и "положить" туда свои глобальные переменные туда (обложив сеттерами/геттерами). Application практически везде доступен через Activity.getApplication() public class MyApplication extends Application { private MyPreciousClass myPreciousObject; public MyPreciousClass getMyPreciousObject() { return this.myPreciousObject; } } //где в коде MyApplication myApp=(MyApplication)this.getApplication(); myPreciousObject=myApp.getMyPreciousObject();

Ответ 2



На самом деле, действительно, в статических переменных лучше хранить только статические( константные ) значения, которые постоянны на протяжении всего RunTime`а. Раз вам необходимо обращаться к данным отовсюду, я бы посоветовал вам создать свой класс для хранения информации, в котором будет инкапсулирована вся логика работы с данными: их хранение, изменение, чтение и генерация исключений в случае ошибок. Ну а экземпляр класса уже хранить в статической переменной в базовой Activity( или же даже можно выделить отдельный класс Data с хранением статических ссылок на объекты и прочие данные ). Таким образом вы обезопасите свое приложение от ошибок, связанным со статикой.

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

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