#ооп #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 с хранением статических ссылок на объекты и прочие данные ). Таким образом вы обезопасите свое приложение от ошибок, связанным со статикой.
Комментариев нет:
Отправить комментарий