Jetpack은 모든 Android 버전과 기기에서 일관되게 작동하는 코드 작성을 도와주는 라이브러리 모음이다.
젯팩은 4가지의 컴포넌트가 있다.
1. Architecture
:: Data Binding, Lifecycle, LiveData, Navigation, Paging, Room, ViewModel, WorkManager
2. UI
:: Animation & Transitions, Auto, TV & Wear, Emoji, Fragment, Layout, Palette
3. Foundation
:: AppCompat, Android KTX, Multidex, Test
4. Behavior
:: Download Manager, Media & Playback, Permissions, Notifications, Sharing, Slices
ViewModel
- View에서 사용되는 데이터를 쉽게 관리하는데 도와주는 역할.
- Jetpack ViewModel과 MVVM 패턴 ViewModel과 차이가 있다.
- Activity 생명주기에 분리를 시켜, Activity가 재실행 되어도 데이터가 소멸되지 않도록 함.
- ViewModel 객체는 액티비티의 Lifecycle 상태가 종료(FINISH)될 때 까지 소멸되지 않음
=> 화면이 Rotation되어 Activity 재실행 된다고 해도 ViewModel이 갖고 있는 데이터는 소멸되지 않으며, 다시 로딩할 필요 없음
뷰모델은 어떤 경우에 사용하는가?
앱을 회전시켰을 때 다시 Create()되어 나타나는데, 이때 값이 초기화되는 경우가 있다.
그래서 onPause에 데이터를 잠시 저장했다가 onResume에서 다시 읽어서 데이터를 전달하는 방식을 사용하거나
onSavedInstance에 저장해서 사용하는 방법이 있었다.
ViewModel을 사용하면 Activity의 Lifecycle에서 자유롭기 때문에, 로테이션이 되도 데이터가 소멸되지 않는다.
ViewModel을 사용하면 onResume, onPause에 데이터를 임시로 저장하는 것을 구현할 필요가 없다.
하지만, 앱이 비정상종료(강제종료)가 되었을 때는 데이터가 보존되지 않는다.
이때는SavedState ViewModel을 사용해서 데이터를 보존해야한다.
'안드로이드 > 정리' 카테고리의 다른 글
[Android] LiveData에 관해... (0) | 2021.10.29 |
---|---|
[Android] Jetpack에 관해...[ Databinding ] (0) | 2021.10.28 |
[Android] Coroutine에 관해... (0) | 2021.10.21 |
[Android] Thread에 관해... (0) | 2021.10.21 |
[Android] 센서에 관해... (with camera) (0) | 2021.10.20 |