📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados em Especialização em Android Nativo. Recomendado revisar antes de começar.

🤖 Aplicativo Android Nativo & Ciclo de Vida de Activities

v1.0 — Android Nativo, Kotlin, Ciclo de Vida de Activities e ViewBinding

Trilha de Especialização Pedagógica — Projeto 1 de 4

🎓 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.

—`

🎯 Objetivo & Escopo do Projeto

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).

—`

🧑‍💼 Fase 1 — Levantamento de Requisitos

O Briefing do Cliente (Líder Mobile)

“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.”

Requisitos Funcionais (RF) e Não-Funcionais (RNF)

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

—`

📋 Fase 2 — Backlog & User Stories

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

—`

🌿 Fase 3 — Engenharia em Equipe (Git Flow & Setup)

# Branch da funcionalidade
git checkout -b feature/US01-android-activity-lifecycle

# Compilar e instalar no emulador / dispositivo via Gradle Wrapper
./gradlew installDebug

—`

🛠️ Fase 4 — Implementação Guiada (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"
    }
}

—`

🚀 Como Executar no Laboratório

1. Abra o terminal na pasta deste projeto

No seu editor/IDE, abra a pasta deste projeto (File > Open Folder) ou navegue via terminal:

cd android_p01_helloworld

2. Execute a aplicação e os testes

./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`

🧭 Decisões de Arquitetura (ADRs)

—`

🧪 Testes de Validação & Logcat

# Monitorar transicoes de ciclo de vida no Logcat
adb logcat -s "CICLO_VIDA"

—`

✅ Checkpoint Final

  1. App compilando com Gradle Wrapper sem erros.
  2. Rotação de tela mantém os dados perfeitamente.

⬅️ Ver Todos os Projetos no Super-Hub 🏠 Página Inicial do Portal