Android Jetpack

목표 ViewModel을 이용하여 Fragment간에 데이터를 공유하는 방법을 안다. ViewModel의 생성 방식 ViewModel은 View(Activity 혹은 Fragment)의 Lifecycle에 Dependent한 Lifecycle을 갖는다. ViewModel 속 데이터가 살아있는 기간이 View가 살아있는 기간보다 길기 때문에 View가 살아 있는 동안은 ViewModel 속 데이터는 유지된다. 그런데 Fragment에는 조금 특이한 성질이 있다. 바로 Fragment의 생명주기는 Fragment가 붙어 있는 Activity에 Dependent한 성질이다. 이러한 성질로 인해 과 같이 하나의 Activity에는 여러 개의 Fragment가 존재할 수 있으며, 각 Fragment는 각자의 생명..
목표 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) 글을 참조..
목표 LiveData가 무엇인지 안다. LiveData의 setValue와 postValue의 차이점에 대해 안다. 개요 LiveData는 수명주기를 인식하는 데이터 발행자(Observable)이다. 발행자(Observable, Publisher) 리액티브 프로그래밍에서 발행자는 자신에게 붙은 구독자(subscriber)에게 데이터를 발행해주는 역할을 한다. LiveData는 수명주기를 인식하여 옵저버(observer)에게 데이터를 발행한다. 즉, LiveData는 발행자이며, 옵저버(observer)라 불리는 구독자(subscriber)을 붙일 수 있다. LiveData의 데이터가 바뀔 때 LiveData에 붙은 구독자들에게 데이터가 발행된다. 하지만, 기존 리액티브 프로그래밍과 다르게 LiveData..
Dev.Cho
'Android Jetpack' 카테고리의 글 목록 (2 Page)