Android/AAC(11)
-
Navigation
navigation이란? 프래그먼트 간 전환을 위해 스토리보드를 통해 액션을 제공하는 라이브러리 navigation 사용법 build 설정 사용할 프래그먼트 생성 res > navigation > navigation파일에서 스토리보드 생성 액티비티 layout에서 navigation 설정 (추가) type safety를 위한 설정 1. build 설정 def nav_version = "2.3.5" // Kotlin implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androidx.navigation:navigation-ui-ktx:$nav_version" 2. 사용할 프래그먼트 생성 // Fir..
2021.08.13 -
DataBinding
DataBinding이란? UI와 데이터소스를 연결하는 방식 DataBinding 특징 단방향 데이터 바인딩 - 표현식 : "@{[args]}" 양방향(two-way) 데이터 바인딩 지원 - 표현식 : "@={[args]}" DataBinding 사용법 build 설정 layout 추가 설정 데이터바인딩 추가 layout에서 표현식으로 값 사용 1. build 설정 android { ... buildFeatures { dataBinding true } } 2. layout 추가 설정(layout태그로 감싸고, 필요한 경우 data 설정해 변수 추가) ... 3. 데이터바인딩 추가 // 필수 설정(lifecycleOwner는 LiveData 사용위해 설정 필요) val binding = DataBindin..
2021.08.13 -
ViewModel
ViewModel 이란? 기존 MVVM의 ViewModel 역할(UI에 맞는 데이터 제공) + 수명주기 ViewModel의 특징 UI 컨트롤러(activity, fragment, adapter 등)에 대한 context를 참조하면 안됨 context가 필요한 경우 AndroidViewModel을 이용 ViewModel을 관리하는 ViewModelStore가 있고, 이를 관리하는 ViewModelStoreOwner가 있음. ViewModelStoreOwner는 ComponentActivity와 Fragment에서 구현하고 있음. 따라서 ViewModel 생성 시 바인딩하는 ViewModelStoreOwner는 Activity나 Fragment가 될 것이고, 이것에 따라 ViewModel의 Scope이 결정..
2021.08.12 -
LiveData
LiveData란? 관찰 가능한 데이터 홀더 클래스(쉽게 말해서, 변경되는 데이터를 가지고 있고 다른 곳에서 관찰할 수 있도록 제공해주는 구조) LiveData 특징 observer 등록 시 바인드 된 lifecycle에 따라 자동 관리되어 메모리 릭 잡아줌(observeForever(Observer) 등록은 관련 lifecycle이 없어 직접 해제해야 메모리 릭 생기지 않음(removeObserver(Observer))) lifecycle owner Active : Lifecycle.state#STARTED, Lifecycle.state#RESUMED lifecycle owner Inactive : Lifecycle.state#DESTROYED LiveData 계층 LiveData는 abstract c..
2021.08.12 -
Room
Room이란 ? SQLite 추상화를 제공하는 라이브러리 Room 사용 방법 build 설정 @Entity, @Dao, @Database 클래스 생성 @Database 인스턴스 생성 후 사용 1. build 설정 implementation 'androidx.room:room-runtime:2.2.5' kapt 'androidx.room:room-compiler:2.2.5' // To use Kotlin annotation processing tool (kapt) kapt("androidx.room:room-compiler:$room_version") kotlin에서는 annotation을 사용하기 위해 annotationProcessor가 아닌 kapt 플러그인을 사용해야한다. 해당 플러그인은 build..
2021.08.12