Обеспечение хранилища одноразовым в android - PullRequest
0 голосов
/ 30 января 2020

Я начал использовать кинжал для моего приложения kotlin android. Я хочу убедиться, что хранилище будет инициализировано только один раз, поэтому я добавил область @Singleton для хранилища. Достаточно ли этого или есть какие-либо преимущества в дизайне, чтобы сделать некоторые дополнительные шаги простым kotlin, чтобы сделать класс одиночным?

@Module
abstract class RepositoryModule{

    @Binds
    @Singleton
    abstract fun provideRepository(someRepo : SomeRepo): Repository
}



@Singleton
@Component(modules = [
    AndroidSupportInjectionModule::class,
    ActivityBindingModule::class,
    RepositoryModule::class,
])

interface AppComponent : AndroidInjector<MyApplication>


class SomeRepo @Inject constructor (
     service : Service ,
     anotherService : Service 
) : Repository{

1 Ответ

1 голос
/ 30 января 2020

Короткий ответ: если вы используете Somerepo в том же Component, это всегда будет один и тот же экземпляр, если вы попытаетесь предоставить из другого Component, он создаст другой экземпляр и будет действовать только для время жизни компонента.

Вы всегда можете поставить точку останова, посмотреть экземпляр и сравнить его.

...