https://www.youtube.com/watch?v=Y-uPcwBEEV4&t=2s
*아키텍쳐 컴포넌트? -> 라이프사이클 관리를 쉽게 하는 것
*라이브데이터 사용 시 -> 데이터 변경시 알림을 받아 ui를 자동으로 변경 가능(데이터 바인딩-옵저버블 필드보다 쉬움 )
*뷰모델 -> ui와 관계가 있는 데이터를 저장하는 용도.
*룸 -> sqlite를 대체하는 라이브러리
*기존 databinding 만 사용한다면? -> 라이프사이클 때문에 화면 회전시 값이 날아감.
*뷰모델의 라이프사이클 -> 액티비티 소멸시 소멸, 화면 회전해도 값이 날라가지 않음
*라이브데이터와 뷰모델을 엮어서 쓰면?-> 관찰 가능한데이터로 만들 수 있다.
- 수정이 가능하다면 MutableLiveData,데이터를 set할 필요가 없다면 LiveData
- 라이브데이터 생성시 초기화안하면 null값.
- 라이브 데이터를 observe함수로 관찰-> 라이브데이터에 변경 사항이 생기면 UI Update를 수행할 수 있음
*그런데 데이터바인딩과 뷰모델을 엮어서 쓰면 -> 더욱 더 간단해짐
- xml 파일에 라이브데이터(뷰모델.라이브데이터)를 바로 꽂아주면 observe함수 없앨 수 있음
- binding.setLifecycleOwner(this) 호출로 액티비티의 라이프 사이클을 참조해서 데이터 변경시에 알아서 리프레쉬 해줌.
- binding.setViewModel(viewModel)로 뷰모델을 바인딩에 바로 꽂아줌.
- UI변경하는 코드 없으나 setLifecycleOwner을 호출했기때문에 라이브데이터가 바뀌면 다시 그려짐.
- xml에 onclick속성에 람다식 ()->viewModel.increase() 써주면 액티비티에 온클릭리스너 삭제가능.
- 액티비티에는 UI를 연결해주는 코드만 남게 됨.
* 액티비티안에 프래그 먼트2개가 서로 데이터를 공유하는 방법
-> 뷰모델 사용으로 공유 데이터를 만들 수 있음.
-> 두 프래그먼트가 액티비티의 뷰모델을 공유하면 됨.
*etc
-FloatingActionButton 축약어 -> fab
'Android' 카테고리의 다른 글
| [Android] Room - LiveData 연동 (0) | 2020.09.11 |
|---|---|
| [Android] DB를 이용한 데이터 저장 방법 room (0) | 2020.09.11 |
| [Android] 데이터 바인딩을 사용한 문자열 형식 지정 (0) | 2020.09.11 |
| [Android] Style your TextView (0) | 2020.08.21 |
| [Android] Understand API levels and compatibility (0) | 2020.08.21 |