요구사항

기기를 회전해도 현재 뮤직비디오 재생 상태가 이어지도록 구현하기

1️⃣ ViewModel 사용이유

Android에서 configuration change(화면 회전, 테마 변경 등)가 발생했을 때 Activity나 Fragment는 소멸 후 재생성된다.

따라서 별도로 상태를 유지할 수 있는 방법을 적용해야 한다.

  1. onSaveInstanceState

데이터를 Bundle에 저장하고 복원하는 방식으로 유지한다.

하지만 직렬화가 가능한 데이터만 저장되고, 데이터의 크기가 제한적이므로 복잡한 데이터 구조를 저장하기 어렵다.

  1. rememberSaveable

Jetpack Compose에서 제공하며 Bundle에 데이터를 저장하고, 별도로 데이터를 불러올 필요 없이 자동으로 복원해준다.

  1. ViewModel

ViewModelProvider를 통해 ActivityFragment에서 관리된다.

Compose에서는 viewModel() 또는 hiltViewModel()을 호출해서 ViewModel을 생성할 수 있다.

ViewModelProvider의 내부에서 ViewModelStore가 ViewModel의 인스턴스를 저장하고, configuration change 발생 시 기존 ViewModel 인스턴스를 반환한다.

장점들