목표 ViewModel의 초기화 방법을 숙지한다. ViewModelProvider을 이용한 초기화 class MainActivity : AppCompatActivity(), View.OnClickListener { val viewModel = ViewModelProvider(this@MainActivity).get(MainViewModel::class.java) .. } ViewModelProvider의 파라미터로 MainActivity(View)를 전달하고 그로부터 ViewModel Class를 넣어 ViewModel을 get 한다. 이로부터 생겨난 ViewModel은 MainActivity의 Lifecycle을 따르는 ViewModel이 된다. by viewModels()를 이용한 초기화 코틀린의 위..
분류 전체보기
목표 ViewModel이 저장 및 호출되는 방법에 대해 간략하게 이해한다. 이 글은 자바 및 안드로이드에 대한 많은 이해가 필요하므로, 이해가 안가면 3번 글로 넘어가도 무방하다. ViewModelProvider을 이용한 초기화 ViewModel 인스턴스를 만들기 위해서는 ViewModelProvider을 사용해야 한다. 가장 기본적인 ViewModel을 초기화 하는 방법을 다룬 아래 코드를 살펴보도록 하자. class MainActivity : AppCompatActivity(), View.OnClickListener { val viewModel = ViewModelProvider(this@MainActivity).get(MainViewModel::class.java) .. } 앞에 1장에서 배웠듯이 ..
목표 ViewModel이 만들어진 이유를 이해한다. ViewModel이 필요한 이유 Android는 모바일 OS 특성상 리소스에 대한 제약이 많은 OS이다. 모바일 OS에서는 리소스를 제거해야만 하게 만드는 제어될 수 없는 이벤트가 발생하게 되는데, Android 프레임워크는 이러한 이벤트가 발생했을 때 Activity와 Fragment 같은 UI 컨트롤러에 대한 제거와 복구를 수행한다. 예를 들어 화면 회전이 이루어진다고 하자. 화면 회전이 이루어지게 되면 Activity가 파괴(onDestroy)된 다음 다시 화면이 만들어지면서(onStart) 복구 로직이(onRestoreInstanceState) 수행된다. Lifecycle에 관한 내용을 모른다면 아래(kotlinworld.com/46) 글을 참조..
목표 by 키워드를 이용하여 Delegate Pattern을 구현하는 방법을 안다. 개요 Kotlin에서는 Delegate Pattern을 구현하기 위한 키워드인 by 키워드를 제공한다. 클래스 선언부의 by 키워드를 먼저 살펴보자 클래스 선언부의 by 키워드 클래스 선언부에는 interface가 implement되거나 다른 클래스가 상속될 수 있다. 위임 패턴은 인터페이스 구현부를 다른 클래스에 위임하는 것이기 때문에 인터페이스 구현에만 사용될 수 있다. 따라서 Kotlin의 위임패턴을 도와주는 by키워드는 다음과 같은 제한을 가진다. by 키워드는 interface가 implement되는 경우에만 사용될 수 있다. 클래스 상속에는 by 키워드 사용이 불가능하다. 변수(val, var)와 메서드(fun..
목표 Delegate Pattern에 대해 이해한다. Delegate Pattern이란 Delegate란 한국말로 위임이라는 뜻이다. 우리가 계약서 등을 작성할 때 대리인에게 결정 권한을 위임한다고 하면, 대리인은 우리의 결정 권한을 가지게 된다. 대리인은 우리와 다른 사람임에도 결정 권한이라는 행동에 대해 우리와 똑같이 행동할 수 있게 되는 것이다. 코틀린의 Delegate Pattern 또한 같다. 코틀린의 Delegate Pattern은 한 객체에의 함수(행동) 혹은 프로퍼티(속성)의 구현을 다른 객체에 위임한다. 예를 들어 객체1과 객체2가 있다고 해보자. 이러한 객체1의 행동을 객체2에 위임한다고 했을 때 객체2는 객체1의 함수와 프로퍼티를 위임 받는다. 예를 들어 다음과 같은 부동산계약을 위한..