rememberSaveable
Mantenha o estado durante alterações de configuração.
rememberSaveable é uma aula grátis de Android Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Android Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Android Academy inclui 4 aulas no total.
O problema com remember
remember sobrevive à recomposição, mas não a alterações de configuração, como a rotação da tela. Quando a atividade é recriada, o estado lembrado é perdido e retorna ao valor inicial.
Apresentando rememberSaveable
rememberSaveable funciona como remember, mas também salva o valor durante alterações de configuração e a morte do processo, restaurando-o depois.
var count by rememberSaveable { mutableStateOf(0) }Exemplo de rotação
Com remember simples, girar o telefone redefine um contador para 0. Com rememberSaveable, a contagem é preservada durante a rotação.
Como ele salva
Internamente, rememberSaveable armazena o valor no Bundle de estado da instância salva da atividade, o mesmo mecanismo que o antigo sistema de Views usava para onSaveInstanceState.
Tipos compatíveis
Ele salva automaticamente os tipos que cabem em um Bundle: tipos primitivos, String e objetos Parcelable. Tipos personalizados exigem um pouco mais de trabalho.
Morte do processo
Se o Android encerrar seu aplicativo em segundo plano para recuperar memória e o usuário retornar, rememberSaveable restaurará o estado salvo para que a tela apareça como o usuário a deixou.
Salvadores personalizados
Para um tipo que não possa ser salvo automaticamente, forneça um salvador que o converta de e para um formato que possa ser salvo. O Compose oferece auxiliares como listSaver e mapSaver.
val saver = listSaver<MyState, Any>(
save = { listOf(it.a, it.b) },
restore = { MyState(it[0] as Int, it[1] as String) }
)Usando um salvador personalizado
Passe o salvador para rememberSaveable por meio do parâmetro saver para que o Compose saiba como persistir seu tipo.
var state by rememberSaveable(stateSaver = saver) {
mutableStateOf(MyState(0, ""))
}Quando usar cada um
Use rememberSaveable para estados que o usuário ficaria incomodado de perder ao girar a tela — entrada de formulário, posição de rolagem ou aba selecionada. Use apenas remember para estados temporários da interface que podem ser redefinidos sem problemas.
Não use para dados grandes
O Bundle salvo é pequeno. Não armazene dados grandes (bitmaps ou listas extensas) em rememberSaveable. Mantenha os dados pesados em um ViewModel ou repositório e salve apenas identificadores pequenos.
Juntando tudo
Um campo de formulário que sobrevive à rotação graças a rememberSaveable.
@Composable
fun LoginField() {
var email by rememberSaveable { mutableStateOf("") }
TextField(
value = email,
onValueChange = { email = it }
)
}Verificação rápida
O que rememberSaveable faz que remember não faz?
Recapitulação
rememberSaveable:
- Sobrevive à rotação e à morte do processo, não apenas à recomposição.
- Salva automaticamente tipos primitivos,
StringeParcelable. - Use um Saver para tipos personalizados.
- Mantenha os dados salvos pequenos; dados grandes devem ficar em um ViewModel.
Perguntas Frequentes
A aula “rememberSaveable” é grátis?
Sim — o texto completo de “rememberSaveable” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Android Academy, atualize para CoddyKit PRO. O curso de Android Academy inclui 4 aulas no total.
O que vou aprender em “rememberSaveable”?
Mantenha o estado durante alterações de configuração. Você pratica Android Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Android Academy?
Nenhuma experiência prévia é necessária. Android Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “rememberSaveable”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Android Academy?
Sim. Cada aula de Android Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.