как избежать использования статических полей в активности и фрагменте

У меня есть проект, разработанный другим разработчиком. Есть много общедоступных статических полей, массивов и т. д. И эти общедоступные статические поля вызываются как бы отовсюду (каждый класс). Это вызывает много сбоев. Мне нужен совет по архитектуре. В любом случае, мне нужно будет реорганизовать весь этот код. Как я могу избежать использования статических полей? Я знаю, как это сделать с помощью интерфейса, особенно при работе с фрагментами активности. Может быть, вы можете предложить какие-то библиотеки для этих целей?


person Jenya Kyrmyza    schedule 16.10.2015    source источник
comment
без какой-либо части кода вам очень трудно помочь. Главное правило - не использовать статические поля, если они действительно не нужны или не являются константами... но то, как заменить статическое поле, зависит от его использования. Связь между действиями может осуществляться через пакет Intent, но хранение настроек должно выполняться через SharedPreferences...   -  person mithrop    schedule 16.10.2015


Ответы (1)


Вы можете использовать Dagger 2 для внедрения зависимостей.

Введение с http://code.tutsplus.com/tutorials/dependency-injection-with-dagger-2-on-android--cms-23345, также это очень хороший туториал по использованию кинжала.

Когда у вас есть объект, который нуждается или зависит от другого объекта для выполнения своей работы, у вас есть зависимость. Зависимости можно решить, позволив зависимому объекту создать зависимость или попросив фабричный объект создать ее. Однако в контексте внедрения зависимостей зависимости предоставляются классу, которому нужна зависимость, чтобы избежать необходимости их создания самому классу. Таким образом, вы создаете программное обеспечение, которое слабо связано и легко обслуживается.

Также проверьте это руководство для лучшего понимания.

person KERiii    schedule 16.10.2015
comment
Спасибо. я слышал некоторые негативные отзывы о кинжале. уже нормально работает? Можно ли использовать его в коммерческих продуктах? - person Jenya Kyrmyza; 16.10.2015
comment
Он отлично работает, да, мы используем его во многих крупных коммерческих проектах. - person KERiii; 16.10.2015