Какие есть альтернативы хранению переменных в классе Application? - PullRequest
0 голосов
/ 17 января 2019

Хотя обычно не рекомендуется использовать класс, расширяющий Application, каковы альтернативы для хранения переменных, к которым требуется глобальный доступ через потоки?

SharedPreferences не могут быть выбраны, поскольку его физическое хранилище и частый доступ к нему создают проблемы с производительностью

Пример: приложение для покупок, которое содержит значение int в классе Application для последнего просмотренного продукта. Эта переменная используется в методе onBindViewHolder в программе повторного просмотра, поэтому к ней нельзя получить доступ с помощью SharedPreferences, как в случае зависания экрана при прокрутке

Единственный способ, который я знаю на данный момент, - это передать его в параметре конструктора, который является достойным, потому что это может привести к очень странным параметрам конструктора, или намерением, которое не всегда является жизнеспособным решением (привет адаптеры)

1 Ответ

0 голосов
/ 17 января 2019

Какие есть альтернативы для хранения переменных, к которым требуется глобальный доступ через потоки?

  • static полей, предпочтительно в виде синглетонов
  • синглтоны с зависимостями (например, Dagger 2, Koin)

Хотя обычно не рекомендуется использовать класс, расширяющий Application

Использование подкласса Application исключительно для хранения глобальных данных бессмысленно & mdash; синглтоны - лучший выбор. Пользовательские подклассы Application хороши для инициализации каждого процесса, например, для настройки структуры внедрения зависимостей, подключения к журналу аварийного завершения и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...