0Pricing
Android Academy · Aula

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, String e Parcelable.
  • 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.

Todas as aulas deste curso

  1. Estado com remember e mutableStateOf
  2. Recomposição explicada
  3. Elevação de estado
  4. rememberSaveable
← Voltar para Android Academy