Size: a a a

StartAndroid Ru Chat

2020 August 16

VM

Vadim Morozov in StartAndroid Ru Chat
никто не подскажет как можно получить Context в репозиторий ?
источник

VM

Vadim Morozov in StartAndroid Ru Chat
ну то есть раньше я передавал его из viewModel что то типа
private val quoteRepository: QuoteRepository = QuoteRepository(application)

а сейчас у меня класс репозитория изменился на
object QuoteRepository : QuoteRepositoryAbs 

но контекст всё равно там нужен.
источник

/

//Adam in StartAndroid Ru Chat
Ребята приложение не показывают рекламу admob что делать?
источник

/

//Adam in StartAndroid Ru Chat
Тестовие показывают а реально нет
источник

КА

Климов Андрей... in StartAndroid Ru Chat
Подскажите, нельзя не как вытащить файлы с zip архива запароленного? Кроме брутфорса. Может есть способ не взлома пароля, а просто вытащить файлы
источник

КА

Климов Андрей... in StartAndroid Ru Chat
//Adam
Ребята приложение не показывают рекламу admob что делать?
там у них вроде с определенного числа скачивания или что-то в этом роде, начинает показывать
источник

ЮС

Юрий Суржиков... in StartAndroid Ru Chat
Vadim Morozov
никто не подскажет как можно получить Context в репозиторий ?
Не знаю, насколько это правильно, но можно создать класс, который наследуется от Application. И нем прописать типа
public static Context getContext() {
   return getApplicationContext();
}
Если на Kotlin, то там вроде бы через companion object делаешь
источник

ЮС

Юрий Суржиков... in StartAndroid Ru Chat
Но все равно не понимаю, к чему в репозитории контекст🤔
источник

SP

Sergey Panov in StartAndroid Ru Chat
Vadim Morozov
ну то есть раньше я передавал его из viewModel что то типа
private val quoteRepository: QuoteRepository = QuoteRepository(application)

а сейчас у меня класс репозитория изменился на
object QuoteRepository : QuoteRepositoryAbs 

но контекст всё равно там нужен.
И потом в любом месте приложения для получения контекста просто вызываете App.instance
источник

VM

Vadim Morozov in StartAndroid Ru Chat
Юрий Суржиков
Но все равно не понимаю, к чему в репозитории контекст🤔
метод getDataBase требует в качестве параметра
https://gist.github.com/mnewlive/714137a567086d459528871adb6a6062
источник

AE

Alexey Egin in StartAndroid Ru Chat
С помощью DI прокинь инстанс в репозиторий
источник

ЮС

Юрий Суржиков... in StartAndroid Ru Chat
Ааа, понял
источник

VM

Vadim Morozov in StartAndroid Ru Chat
Alexey Egin
С помощью DI прокинь инстанс в репозиторий
так вот в этом и загвоздка
ну то есть я создал абтракцию для своего репозитория и так понимаю туда закинуть контекст?
источник

AE

Alexey Egin in StartAndroid Ru Chat
Создание бд не должно происходить в репозитории. Репозиторий должен работать с DAO, а не с самой бд и тем более не создавать её.

Если в проекте есть DI, то следует при создании репозитория передавать уже готовый DAO в конструктор. А если нет DI, то почему?
источник

VM

Vadim Morozov in StartAndroid Ru Chat
Alexey Egin
Создание бд не должно происходить в репозитории. Репозиторий должен работать с DAO, а не с самой бд и тем более не создавать её.

Если в проекте есть DI, то следует при создании репозитория передавать уже готовый DAO в конструктор. А если нет DI, то почему?
у меня следующая структура, можете чекнуть?
https://gist.github.com/mnewlive/714137a567086d459528871adb6a6062
источник

AE

Alexey Egin in StartAndroid Ru Chat
Я бы делал примерно так:

class QuoteRepository(val dao: QuoteDao) {...}

@Provides
@Singleton
fun provideDatabase(
 context: Context
) = QuoteRoomDataBase.getDatabase(context)

@Provides
fun provideDao(
 database: QuoteRoomDataBase
) = QuoteRoomDataBase.getDao()

@Provides
@Singleton
fun provideRepository(
 dao: QuoteDao
) = QuoteRepository(dao)
источник

VM

Vadim Morozov in StartAndroid Ru Chat
Alexey Egin
Я бы делал примерно так:

class QuoteRepository(val dao: QuoteDao) {...}

@Provides
@Singleton
fun provideDatabase(
 context: Context
) = QuoteRoomDataBase.getDatabase(context)

@Provides
fun provideDao(
 database: QuoteRoomDataBase
) = QuoteRoomDataBase.getDao()

@Provides
@Singleton
fun provideRepository(
 dao: QuoteDao
) = QuoteRepository(dao)
QuoteRepository у меня object
которому я имплементирую инфтерфейс
и так для каждого репозитория у меня сделано.
менять сейчас на класс как то не оч гуд как по мне.
источник

AE

Alexey Egin in StartAndroid Ru Chat
Vadim Morozov
QuoteRepository у меня object
которому я имплементирую инфтерфейс
и так для каждого репозитория у меня сделано.
менять сейчас на класс как то не оч гуд как по мне.
Это косяк проектирования, я бы поменял. Иначе хз как адекватно сделать
источник

AE

Alexey Egin in StartAndroid Ru Chat
Если поменять никак, то можно из Application брать контекст, но это еще сильнее усугубит здоровье проекта
источник

VM

Vadim Morozov in StartAndroid Ru Chat
Alexey Egin
Это косяк проектирования, я бы поменял. Иначе хз как адекватно сделать
ну как вариант я допустим сделал что то следующее для PreferenceRepository
а именно
private val preferenceRepository = PreferenceRepository.initObject(context)
в AppModule
и после  в самом PreferenceRepository
fun initObject(appContext: Context):PreferenceRepository {
preferences = PreferenceManager.getDefaultSharedPreferences(appContext)
       return this
   }
источник