일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- SwiftUI #Skeleton #데이터갱신
- 스페인광장
- cocoapod
- 강릉
- 러브스플리트
- swiftUI
- 공기먹는다이버스
- 크로아티아
- 아시아나
- 연금저축펀드
- 스페인여행
- 지팍스페인
- 리브어보드
- Gradle
- 시밀란
- Swift #Concurrency #쓰레드
- 그라나다
- Cocoapods #PrivateRepo #SpecRepo
- xcode
- 도심공항
- 라이브러리
- 세비야
- 러브자그레브
- Device 등록
- 스쿠버다이빙
- 괌 자유여행
- 대한항공
- 푸켓여행
- 스플리트
- Concurrency #Swift #Combine
- Today
- Total
JEP's Diary
Android ViewModel 본문
Android ViewModel
Android Architecture Component의 ViewModel은 액티비티와 프래그먼트에서 사용되는 UI관련 데이터를 보관하고, 관리하기 위해 디자인 되었다.
액티비티가 재생성 될때도 ViewModel의 인스턴스가 유지되어 데이터가 보관이되고,
데이터의 소유권을 ViewModel이 가지고 있기 때문에 코드분리가되어 액티비티와 프래그먼트는 UI를 업데이트 하는 역할을 하게된다.
액티비티의 생성, 화면전환, 종료에 이르는 수명주기에도 ViewModel 스코프는 일관되게 유지가된다.
따라서 프래그먼트들 사이에서 ViewModel을 이용해 데이터를 쉽게 공유할 수 있어, 프로그먼트 간 데이터 공유에 액티비티가 관여하지 않아도 된다.
액티비티가 완전히 종료되는 시점에 ViewModel 의 onCleared()함수가 호출되어 종료된다.
ViewModel 사용시 주의점
ViewModel에 액티비티, 프래그먼트, 뷰에 대한 컨텍스트를 저장해서는 안된다.
액티비티가 재생성될 때, ViewModel은 액티비티 수명 주기 외부에 존재하기 때문에 UI컨텍스트를 ViewModel에 저장하면 메모리릭을 발생시키는 원인이 될 수 있다.
단 Application Context를 저장하는 것은 문제가 되지 않는다. Application Context는 전체 앱의 수명주기를 의미하기 때문에 메모리릭에 영향을 주지 않으며 이런 용도를 위해 AndroidViewModel클래스를 제공한다.
출처. https://medium.com/@jungil.han
'Development > Android' 카테고리의 다른 글
Compose Camp 시작! (0) | 2022.11.02 |
---|---|
ViewPager2 (0) | 2021.01.06 |
Android Unit Tests(단위 테스트) - Local Unit Tests (1) | 2016.03.15 |
Android 6.0 마시멜로 대응(런타임 권한 모델) (0) | 2016.03.14 |
Realm 모바일 데이터 베이스(Android) (0) | 2016.03.13 |