# @Scope
@Scope //스코프임을 알린다.
@Retention(value = AnnotationRetention.RUNTIME) //이 주석은 런타임동안 유지된다.
annotation class ActivityScope
When a type is marked with a scope annotation, it can only be used by components that are annotated with the same scope.
@Scope라고 붙인 타입은 같은 스코프를 가진 컴포넌트에서만 사용될 수 있다.
When a component is marked with a scope annotation, it can only provide types with that annotation or types that have no annotation.
@Scope라고 붙인 컴포넌트는 같은 스코프를 가진 타입이나 아예 스코프 지정을 안한 타입만을 제공할 수 있다.
A subcomponent cannot use a scope annotation used by one of its parent components.
자식 컴포넌트는 부모컴포넌트에서 쓰인 스코프를 쓸 수 없다.
// Classes annotated with @ActivityScope are scoped to the graph and the same
// instance of that type is provided every time the type is requested
@ActivityScope
@Subcomponent
interface LoginComponent { ... }
// A unique instance of LoginViewModel is provided in Components
// annotated with @ActivityScope
@ActivityScope
class LoginViewModel @Inject constructor(
private val userRepository: UserRepository
) { ... }
'안드로이드 앱개발' 카테고리의 다른 글
Service (0) | 2021.09.04 |
---|---|
Permission (0) | 2021.09.04 |
클린아키텍쳐에서의 usecase 분리 (0) | 2021.04.27 |
안드로이드 앱개발에서의 클린아키텍쳐 (0) | 2021.04.17 |
java에서 kotlin으로 마이그레이션 & 리팩토링 (1) - asyncTask를 Coroutine 으로 대체하기 (0) | 2021.04.14 |