
이 글은 compose를 공부하면서 들었던 의문점에 대해서 정리하는 글이다. 너무 사소해서 누군가에게 보여주기 부끄러울 것들도 있겠지만..적어보도록 하겠다.
모르는 건 죄가 아니다!!
처음 컴포즈를 접하면 이 두 단어부터 접하게 된다.
두 개념 모두 compose에서 상태관리를 위해 쓰이는 함수인데 composable 함수 내부에서 상태를 저장하고 compose의 recomposition 과정에서 상태가 유지되도록 한다.
remember은 현재 composable함수가 재구성될 때까지만 상태를 유지하고 이외에는 상태를 유지하지 않는다.
반면 rememberSaveable은 remember과 동일하게 상태를 유지하지만 화면 회전이나 프로세스 종료 후 재시작하는 경우에도 상태를 유지한다. 내부적으로 Bundle을 사용해 상태를 저장하고 복원한다.
여기서 난 의문점이 생겼다.
그럼 무조건 rememberSaveable만 사용하면 안되나?
앱을 사용할때 상태를 저장하고 종료 후에도 유지해야하는 경우들이 꽤 있기에 rememberSaveable을 매우 많이쓸것이라는 생각이 들었다. 하지만 이때까지는 느낌상 남발하면 안될거 같은데 왜 안될까 라는 의문점이 들었다.
⁉️ 남발하면 안되는 이유 ⁉️
우선 rememberSaveable은 사용자 입력과 같이 중요한 데이터 데이터 저장시 활용하는 것이다.
만약 모든 곳에 쓴다면?
성능상 문제가 발생한다. 상태저장을 위해 필요이상으로 많은 데이터를 Bundle에 보관시 메모리 사용량이 증가하고 이렇게 되면 시스템에 의해 앱이 백그라운드에서 더 쉽게 종료될 수 있다.
따라서 우리는 필요에 따라 적절히 remember과 rememberSaveable을 혼합해 사용해야한다.
remember을 써야할때는?
임시 UI 상태저장, 예를 들어 드롭다운 메뉴 열린지 여부, 앱의 중단이나 재시작으로 인해 유지될 필요없을때 적합하다.