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가 낫지 않을까 생각한다.
'안드로이드 개발 > 개발팁' 카테고리의 다른 글
| 함수의 마지막 인자로 람다를 쓰는 이유 (0) | 2023.11.01 |
|---|---|
| 안드로이드스튜디오 애뮬레이터 죽어도 실행안될때 (2) | 2023.10.30 |
| 루팅단말기일 경우 실행 차단 (0) | 2023.10.30 |
| MediaBrowserService 와 MediaSessionCompat 을 이용해서 exoplayer 만들기 (0) | 2023.10.26 |
| companion object 싱글턴과 커스텀 싱글턴의 차이 (0) | 2023.10.24 |