Jetpack Compose에서 remember vs rememberSaveable 차이 완벽 정리

2025. 2. 13. 16:51Android/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
반응형