Jetpack Compose에서 remember vs rememberSaveable 차이 완벽 정리
2025. 2. 13. 16:51ㆍAndroid/Jetpack
728x90
반응형
Jetpack Compose에서는 remember와 rememberSaveable을 사용하여 상태(state)를 유지할 수 있다.
하지만 두 함수의 동작 방식이 다르며, 유지되는 범위도 차이가 있다.
1️⃣ remember
📌 개념
- remember는 Composable 함수가 재구성(Recomposition)될 때 값이 유지
- 하지만 Activity가 재생성되거나 화면이 회전하면 값이 초기화.
- Composition Scope(컴포저블 생명주기) 안에서만 유지
🔹 언제 사용해야 할까?
- UI 상태(애니메이션 진행 상태, UI 트리거 등)를 유지할 때
- 화면 회전 후에도 데이터가 유지될 필요가 없을 때
2️⃣ rememberSaveable
📌 개념
- rememberSaveable은 remember와 비슷하지만, Activity가 재생성되거나 화면이 회전해도 값이 유지
- 내부적으로 SavedInstanceState를 활용하여 값을 저장
- 기본적으로 Primitive Type(Int, String 등), Parcelable, Serializable, Bundle에 저장 가능한 객체만 유지
- List, Map 같은 복잡한 데이터 구조도 유지 가능 (Saver 사용)
🔹 언제 사용해야 할까?
- 사용자의 입력 값을 유지해야 할 때 (ex. EditText, 체크박스, 스크롤 위치 등)
- 화면 회전 후에도 값이 유지되어야 할 때
3️⃣ 결론
- remember는 Composition 범위 내에서만 유지
- rememberSaveable은 화면 회전, 프로세스 종료 후에도 유지
- 복잡한 객체는 Saver를 사용하면 rememberSaveable로 저장 가능
즉, 중요한 데이터를 유지해야 한다면 rememberSaveable을 쓰는 것이 안전한 선택!
728x90
반응형
'Android > Jetpack' 카테고리의 다른 글
[Jetpack WebView] shouldOverrideUrlLoading vs shouldInterceptRequest 완벽 정리 (0) | 2025.03.20 |
---|---|
Compose에서 네비게이션을 통한 데이터 전달 및 savedStateHandle 활용 (0) | 2025.02.26 |
Android Studio에서 Proto DataStore 설정하는 방법 (gradle kotlin) (0) | 2024.11.07 |
Preference DataStore와 Proto DataStore의 차이 (0) | 2024.11.05 |
[Android/Jetpack]ViewModel + Databinding + LiveData (0) | 2023.02.24 |