Android/MVVM (based on AAC) 11

Databinding - ObservableField, BaseObservable

ObservableField (@Android/Databinding) : 객체를 observable(=관찰 가능)하게 만드는 wrapper 클래스. - Android의 Databinding의 소속으로 DataBinding을 활성화해야 사용 가능 java.lang.Object ↳ android.databinding.BaseObservable ↳ android.databinding.ObservableField - 사용 : ViewModel에서 로직이 변경 시 UI(의 작은 부분)가 자동 업데이트되도록 하기 위해 사용 - 사용법) ㄴ> 생성 : 아래와 같은 방법으로 생성가능 1) Observable Primitive타입클래스 ex) Observable(), ObservableInt() 2) Observable..

Room

Room : SQLite(스마트폰 내장 DB)에 데이터를 저장하기 위해 사용하는 라이브러리 - SQLite를 활용해서 객체 매핑을 해주는 역할을 한다.(SQLite에 추상화 계층을 제공) - Room을 사용하면 다음과 같은 이점이 있습니다. 더보기 SQL 쿼리의 컴파일 시간 확인 반복적이고 오류가 발생하기 쉬운 상용구 코드를 최소화하는 편의 주석 간소화된 데이터베이스 이전 경로 0.설정 dependencies { val roomVersion = "2.4.2" implementation("androidx.room:room-runtime:$roomVersion") annotationProcessor("androidx.room:room-compiler:$roomVersion") // To use Kotlin ..

ViewModel

ViewModel 안드로이드는 화면 회전과 같이 구성을 변경할 때 UI 컨트롤러를 제거하거나 다시 만들어지면서 UI 컨트롤러에 저장된 모든 일시적인 UI 관련 데이터가 삭제됩니다. cf) 그래서 기존에는 onSaveInstanceState() 메서드를 사용하여 데이터 삭제 전 보관하였으나 제한적이었습니다. 더보기 onSaveInstanceState() 메서드를 사용하여 onCreate()의 번들에서 데이터를 복원할 수 있습니다. 하지만 이 접근 방법은 1) 사용자 목록이나 비트맵과 같은 대용량일 가능성이 높은 데이터가 아니라, 직렬화했다가 다시 역직렬화할 수 있는 소량의 데이터에만 적합합니다. 2) 다른 문제는 UI 컨트롤러가 반환하는 데 시간이 걸릴 수 있는 비동기 호출을 자주 해야 한다는 점입니다. ..

LiveData

LiveData - LiveData는 구독 시 Android Lifecycle을 따르도록 구현되어 있다. - LiveData는 항상 최신 데이터만을 보증한다. 이유는 위에서 보았던 setValue를 보면 알 수 있다. setValue는 어떠한 처리도 없는 단순 변수이다. 변수는 항상 마지막 데이터만을 들고 있을 수 있다. - LiveData는 항상 MainThread에서 사용할 값을 보증한다. (setValue를 하든 postValue를 하든) 0. 설정 def lifecycle_version = "2.3.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" // LiveData imple..

ViewBinding vs DataBinding

ViewBinding ViewBinding을 사용하면 뷰와 상호작용하는 코드를 쉽게 작성할 수 있다. View Binding은 각 XML 레이아웃 파일의 Binding 클래스를 생성한다. Binding 클래스의 인스턴스에서 레이아웃에 ID가 있는 모든 뷰의 직접참조를 할 수 있다. 즉, 간단하게 findViewByID를 쓰지 않고 XML의 view component에 접근하는 object를 반환받아서 view에 접근하는 방식이다. 여기서 object는 Android Studio에서 자동으로 대신 만들어준다. viewBinding은 findViewById를 대체하기 위한 방법으로만 사용된다. 따라서 기존에 제공되는 dataBinding과 viewBinding을 같은 모듈에서 동시에 사용할 수도 있다. (v..