📊 Capítulo 03: Jetpack Compose & Recomposição
Especialização em Mobile Nativo Android
🗺️ O Ciclo de Vida da Recomposição Inteligente
flowchart TD
STATE["Estado da UI Muda (ex: contador++)"]
--> COMP_ENGINE["Compose Compiler & Runtime"]
--> SMART_REC["Smart Recomposition (Identifica apenas os nós dependentes do estado alterado)"]
--> RECOMPOSE["Re-executa APENAS o @Composable Text('$contador')"]
--> SKIP["Composables com parâmetros estáveis inalterados são PULADOS (Skipped!)"]
--> GPU["Pintura Otimizada na GPU a 120 FPS"]
style STATE fill:#ede7f6,stroke:#512da8,stroke-width:2px
style COMP_ENGINE fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style SMART_REC fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style RECOMPOSE fill:#e1f5fe,stroke:#03a9f4,stroke-width:1.5px
style SKIP fill:#c8e6c9,stroke:#2e7d32,stroke-width:1.5px
style GPU fill:#00897b,stroke:#004d40,stroke-width:2px,color:#ffffff
🎯 Slide 1: O Que é uma Função @Composable?
-
Funções puras anotadas com
@Composabledescrevem como a interface deve se parecer para um determinado conjunto de dados. -
Zero Herança de Views: Não herdam da classe pesada
android.view.View. - Executam de forma paralela e em ordem imprevisível pelo runtime do Compose.
🎯 Slide 2: Exemplo de Composable Simples
@Composable
fun CartaoProduto(nome: String, preco: Double, onClick: () -> Unit) {
Card(
modifier = Modifier.fillMaxWidth().padding(8.dp).clickable { onClick() }
) {
Column(modifier = Modifier.padding(16.dp)) {
Text(text = nome, style = MaterialTheme.typography.titleMedium)
Text(text = "R$ $preco", style = MaterialTheme.typography.bodyLarge)
}
}
}
🎯 Slide 3: Estabilidade de Parâmetros & @Stable
- Tipos imutáveis (
String,Int,data classcomval) são considerados estáveis pelo compilador, permitindo que o Compose pule (Skip) recomposições desnecessárias.
🔗 Navegação do Capítulo 03
| 📖 Ler Conteúdo Completo | 🧠 Fazer Quiz | 💻 Ver Exemplos | 🧩 Exercícios |
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim