예제 링크 : https://github.com/seyoungcho2/Dagger2Example 이 글은 예제7,8,9과 함께 한다. Scope란? Dagger2의 역할은 외부에서 의존성을 주입해주는 것이다. 여기서 문제점이 생긴다. 외부(Container)에서 제공하는 인스턴스들이 한 번만 생성되어도 되는데 호출할 때마다 생성된다면 불필요한 메모리 사용이 생긴다. Dagger2에서는 이를 해결하기 위해 Scope Annotation을 이용해 같은 범위(Scope)의 내에서 객체들을 관리하게 된다. Scope Annotation이 적용된 Provider은 범위(Scope) 내에서 한 번만 객체를 생성한다. Dagger에서는 Scope Annotation을 이용해 한 번 생성된 객체가 재사용되는 범위(Sc..
Android
Dagger2의 IOC Container 구성 앞의 글에서 Dagger2의 3가지 구성요소 Container, Module, Provider에 대해 배웠다. Component : 클래스의 인스턴스를 모아놓는 저장소(Container) 역할. 각 인스턴스들은 Module 단위로 제공된다. Module : Module 단위로 클래스의 인스턴스를 모아놓는 역할 Provider : 클래스의 인스턴스를 제공(Provide)해주는 역할 이제 각 부분이 어떤 역할을 하는지 알았으므로 더욱 상세히 정리해보고자 한다. Dagger2을 이용해 의존성 주입 구현하기 앞의 글에서 다음과 같은 그림을 본 적이 있다. 는 의존성을 약화시키기 위한 인터페이스의 역할에 대해 설명하면서 나온 그림이다. CPU Time을 구하기 위해 ..
URI란? URI란 Uniform Resource Identifier의 약자이다. 즉 아래와 같이 해석될 수 있다. URI는 리소스를 구분할 수 있는 식별자이다. URI를 통해 우리가 접근해야 하는 리소스가 어디 있는지 알 수 있으며, URI는 인터넷, 모바일 기기 등 다양한 곳에서 사용된다. 보통 우리는 인터넷에서 리소스에 접근하기 위해, 다음과 같은 URI를 사용한다. https://kotlinworld.com/94 위 URI는 통신 방식인 https, 도메인 kotlinworld.com, 리소스 디렉토리 94번 총 3가지로 이루어져 있다. 위 형식의 URI를 처리할 수 있는 웹 브라우져 프로그램에 URI를 전송하면, kotlinworld.com 도메인이 가리키는 IP Address의 94번째 글에 ..
목표 ViewModel을 이용하여 Fragment간에 데이터를 공유하는 방법을 안다. ViewModel의 생성 방식 ViewModel은 View(Activity 혹은 Fragment)의 Lifecycle에 Dependent한 Lifecycle을 갖는다. ViewModel 속 데이터가 살아있는 기간이 View가 살아있는 기간보다 길기 때문에 View가 살아 있는 동안은 ViewModel 속 데이터는 유지된다. 그런데 Fragment에는 조금 특이한 성질이 있다. 바로 Fragment의 생명주기는 Fragment가 붙어 있는 Activity에 Dependent한 성질이다. 이러한 성질로 인해 과 같이 하나의 Activity에는 여러 개의 Fragment가 존재할 수 있으며, 각 Fragment는 각자의 생명..
목표 ViewModel이 저장 및 호출되는 방법에 대해 간략하게 이해한다. 이 글은 자바 및 안드로이드에 대한 많은 이해가 필요하므로, 이해가 안가면 3번 글로 넘어가도 무방하다. ViewModelProvider을 이용한 초기화 ViewModel 인스턴스를 만들기 위해서는 ViewModelProvider을 사용해야 한다. 가장 기본적인 ViewModel을 초기화 하는 방법을 다룬 아래 코드를 살펴보도록 하자. class MainActivity : AppCompatActivity(), View.OnClickListener { val viewModel = ViewModelProvider(this@MainActivity).get(MainViewModel::class.java) .. } 앞에 1장에서 배웠듯이 ..