Избежание использования компонента Dagger, который создает неиспользуемые экземпляры классов - PullRequest
0 голосов
/ 21 мая 2019

Если вы посмотрите на диаграмму, опубликованную Google для разработки приложения для Android:

https://developer.android.com/jetpack/docs/guide

вы заметите, что похоже, что в одном репозитории используется абстрактный доступ к кэшированным данным и данным, доступ к которым осуществляется через Интернет. Я предполагаю, что этот репозиторий является единым классом и действительно видел приложения, которые имеют один большой репозиторий.

Но это поднимает вопрос о том, как Dagger используется при работе с чем-то вроде хранилища. В моем приложении будут классы, которым иногда потребуется доступ к кэшированным данным из локального хранилища или с помощью Room. Затем существуют вызовы API REST для извлечения данных.

Что меня беспокоит, так это то, что если я создаю один репозиторий, я действительно не хочу, чтобы классы создавались для кеша, когда кеш не использовался, или для создания экземпляров классов для обработки REST apis, когда требуется кеширование. Другими словами, кажется бессмысленным создавать компонент с использованием Dagger, который включает в себя модули для локального доступа к данным и веб-доступа. Я хочу, чтобы Dagger не создавал экземпляры всех этих классов одновременно и не оставлял их в памяти во время работы приложения. Лучшее решение - создавать вещи, которые мне нужны, только тогда, когда они мне нужны.

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

...