📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados em Especialização em Android Nativo. Recomendado revisar antes de começar.
v1.0 — Android Nativo, Kotlin, Ciclo de Vida de Activities e ViewBinding
Trilha de Especialização Pedagógica — Projeto 1 de 4
- ➡️ v1 (este): Android Nativo · Kotlin · Ciclo de Vida de Activity · ViewBinding
- v2: Interface Moderna Declarativa com Jetpack Compose & State
- v3: Persistência Local com Room Database & Coroutines
- v4: Consumo de APIs REST com Retrofit, OkHttp & Hilt DI
🎓 Nível Profissional Simulado: Desenvolvedor Android Júnior. O desenvolvimento Android nativo em Kotlin é o padrão da indústria para aplicativos de alta performance. Entender o Ciclo de Vida de Activities (
onCreate,onPause,onDestroy) e a retenção de estado em rotações de tela é a base indispensável de qualquer engenheiro mobile.
—`
Construir um Aplicativo Android Nativo em Kotlin, implementando o controle estrito dos estados do ciclo de vida da Activity, captura de eventos de toque com ViewBinding, salvamento de estado de tela com onSaveInstanceState e exibição de componentes nativos (MaterialButton, TextView, Toast).
—`
“Nosso aplicativo mobile antigo travava ou zerava os dados toda vez que o usuário girava o celular de pé para deitado (rotação de tela). Queremos um aplicativo de controle de presença em Kotlin nativo que registre o ciclo de vida nos logs (Logcat), mantenha o contador salvo mesmo se a tela girar e use ViewBinding para eliminar o arcaico
findViewById.”
| ID | Tipo | Descrição | Origem no Briefing |
|---|---|---|---|
| RF01 | Funcional | Exibir contador numérico com botões de incremento e reset. | “aplicativo de controle de presença” |
| RF02 | Funcional | Reter o valor do contador na rotação de tela via onSaveInstanceState(Bundle). |
“mantenha o contador salvo na rotação” |
| RF03 | Funcional | Registrar transições de ciclo de vida no Logcat (Log.d). |
“registre o ciclo de vida nos logs” |
| RNF01 | Não-Funcional | Uso obrigatório de ViewBinding em substituição a findViewById. |
Boas Práticas Android |
| RNF02 | Não-Funcional | 100% Kotlin com Target SDK 34 (Android 14). | Modernidade Mobile |
—`
| ID | User Story | Prioridade |
|---|---|---|
| US01 | Como usuário, quero girar o smartphone sem perder a contagem atual da tela. | Alta |
| US02 | Como desenvolvedor, quero vincular componentes da UI com segurança de tipos via ViewBinding. | Alta |
—`
# Branch da funcionalidade
git checkout -b feature/US01-android-activity-lifecycle
# Compilar e instalar no emulador / dispositivo via Gradle Wrapper
./gradlew installDebug
—`
MainActivity.kt)package com.portal.android
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import com.portal.android.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private var contador = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
// Restaurar estado salvo da rotacao
contador = savedInstanceState?.getInt("CONTADOR_KEY") ?: 0
atualizarUI()
binding.btnContar.setOnClickListener {
contador++
atualizarUI()
}
Log.d("CICLO_VIDA", "onCreate executado com sucesso.")
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putInt("CONTADOR_KEY", contador)
Log.d("CICLO_VIDA", "onSaveInstanceState: salvando estado.")
}
private fun atualizarUI() {
binding.tvValor.text = "Presença: $contador"
}
}
—`
No seu editor/IDE, abra a pasta deste projeto (File > Open Folder) ou navegue via terminal:
cd android_p01_helloworld
./gradlew build
./gradlew test
# ou abrir no Android Studio e clicar em Run (Shift+F10)
[!TIP] Dica para execução a partir da raiz do repositório: Se você abriu o repositório completo no VS Code, basta navegar até a pasta antes de executar: cd proj_aplicacoes_full_stack/projetos/android_p01_helloworld`
—`
# Monitorar transicoes de ciclo de vida no Logcat
adb logcat -s "CICLO_VIDA"
—`
- App compilando com Gradle Wrapper sem erros.
- Rotação de tela mantém os dados perfeitamente.
| ⬅️ Ver Todos os Projetos no Super-Hub | 🏠 Página Inicial do Portal |