관리 메뉴

막내의 막무가내 프로그래밍 & 일상

[안드로이드] DI Dagger2 @Singleton vs @Resuable 차이점 정리 본문

안드로이드/코틀린 & 아키텍처 & Recent

[안드로이드] DI Dagger2 @Singleton vs @Resuable 차이점 정리

막무가내막내 2020. 8. 8. 17:35
728x90

 

 

[2021-04-14 업데이트]

 

[참고]

https://proandroiddev.com/dagger-2-check-singlecheck-doublecheck-scopes-4ee48fc31736

 

Dagger 2 : Check — SingleCheck — DoubleCheck … Scopes

This article is a part of the “Dagger 2 Android: Defeat the Dahaka” series, you can checkout the main article here.

proandroiddev.com

 

https://stackoverflow.com/questions/39136042/dagger-reusable-scope-vs-singleton

 

Dagger @Reusable scope vs @Singleton

From the User's Guide: Sometimes you want to limit the number of times an @Inject-constructed class is instantiated or a @Provides method is called, but you don’t need to guarantee that the ...

stackoverflow.com

https://brunch.co.kr/@oemilk/72

 

Dagger 2 #03

Dagger 2 | Dagger 2 이전 글을 통해 Dagger를 이용한 의존성 주입(Dependency Injection) 구현법과 주요 Annotation 들을 간단히 살펴봤습니다. @Inject @Provides, @Module @Component 이번에는 다른 Annotation들과 기타 Inject

brunch.co.kr

https://www.charlezz.com/?p=1289

 

Dagger2를 알아보자 – Scope | 찰스의 안드로이드

Dagger2를 알아보자 – 기본편 Dagger2를 알아보자 – Scope (You’re here) Dagger2를 알아보자 – Injection의 종류 Dagger2를 알아보자 – Qualifier Dagger2를 알아보자 – Binding Dagger2를 알아보자 – Multibinding Dagg

www.charlezz.com

https://stackoverflow.com/questions/47742002/what-is-the-use-of-reusable-scope-in-dagger-2?rq=1

 

What is the use of @Reusable scope in Dagger 2

I'm trying to understand the use of the @Reusable scope of Dagger. From the documentations what I can understand is that if a provider is scoped with @Singleton or any other custom scope, then the ...

stackoverflow.com

 

안녕하세요 ㅎㅎ

 

대거에 @Singleton 을 사용하던 도중 @Reusable 이라는 스코프를 사용해보는게 어떻냐는 조언을 받았는데요.

둘의 차이점에 대해 간략히 정리해보겠습니다. 위 사이트는 제가 참고한 사이트들을 모아봤습니다. 

 

@Singleton

아시는대로 항상 동일한 인스턴스를 재사용합니다. 그리고 @Component 와 관련이 있으며 Application scope 이기 때문에 애플리케이션이 죽을때가지 메모리에 살아있을 수 있습니다.

 

@Reusable

이미 생성한 인스턴스 존재하면 싱글톤처럼 재사용하고 없으면 인스턴스를 생성해서 사용합니다. @Componet와 관련이 없으며(즉 scope - non scope 차이 X ) 단순 인스턴스기 때문에 가비지 컬렉터(GC)에 의해 관리되어 메모리에서 해제될 수 있습니다. 그래서 메모리 관리 측면에서 더 효율적일 수도 있는 장점이 있는 반면 @Singleton 처럼 항상 같은 인스턴스를 제공한다는 보장이 없습니다. (있다면 재사용 가비지 컬렉터에 의해 정리됬다면 새로 생성!)

 

따라서 항상 같은 인스턴스 제공을 보장받아야하는 경우는 Singleton 을, 상관이 없다면 메모리 관리 효율에 좀 더 좋은 Reusable을 사용하면 될 것 같습니다. 그리고 Singleton 이 좀 더 빠르다고도 합니다. 

 

 

 

댓글과 공감은 큰 힘이 됩니다. 감사합니다!!

728x90
Comments