EnjoyLife

remember 와 rememberSaveable 의 차이 본문

안드로이드 개발/개발팁

remember 와 rememberSaveable 의 차이

Aiden96 2023. 10. 25. 16:10

1.remember  은 @Composable로 선언한 함수내에서 데이터가 유지되고,회전시에는 데이터 초기화 

2.rememberSaveable는 @Composable로 선언한 함수뿐만 아니라 화면 회전시에도 데이터 유지 

아래코드는 count 변수를 rememberSaveable 선언해  카운트 증가버튼을 눌러 숫자가 증가한후 회전해도

숫자가 초기화가 되지 않는다.하지만 rember를 사용하면 회전시 초기화가 된다. 

@Composable
fun StateExample() {
    val viewModel: MyViewModel = viewModel()
    val count by rememberSaveable { mutableStateOf(0) }

    Column(
        modifier = Modifier.fillMaxSize(),
        verticalArrangement = Arrangement.Center,
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        Text(text = "Count: $count", style = MaterialTheme.typography.h3)

        Button(onClick = { count++ }) {
            Text(text = "Increment")
        }
    }
}

@Composable
fun MyViewModel() {
    val state by remember { mutableStateOf(0) }
}

의문이 든다 무조건 " rememberSaveable " 쓰면 되는거 아닌가?

[단점]

1.메모리 사용량: 회전해도 값이 유지된다는건 ,메모리상에 데이터를 가지고 있는다는게 된다.

유지하는 데이터가 많으면 앱의 메모리 사용량이 늘어난다.

2.캐시관리: 특정조건에서 캐시된 데이터가 관리되지 않을수 있다. 

화면 회전을 하지 않고 세로화면 일경우 무조건 remember , 너무 많은 데이터를 유지해야 하는경우도

remember가 낫지 않을까 생각한다.