Programação Mobile
Esta matéria não tem simulado — é um resumo dos tópicos das 4 aulas (Kotlin/Android) para revisar antes da prova.
Aula 1 — Fundamentos e Introdução ao Kotlin
Tópico
Linha do tempo do mobile
Resumo: Imprensa (1605) → Computadores (1945) → Internet (1969) → Smartphones (2007) → IoT (2009) → IA Generativa (2022). O iPhone foi lançado em 29/06/2007 e o Android em 22/10/2008. Hoje o Android é o sistema operacional mais usado do mundo (cerca de 45% de market share, à frente de Windows e iOS).
Tópico
Abordagens de desenvolvimento mobile
Resumo: Existem três caminhos principais: Nativo (Swift para iOS, Kotlin/Java para Android — melhor performance e melhor experiência do usuário, porém mais caro); Híbrido/Web (React Native, Ionic/Capacitor — mais rápido de desenvolver); Multiplataforma (Flutter/Dart, .NET MAUI — um só código para vários sistemas).
Tópico
Como escolher a abordagem certa
Resumo: A escolha depende de 4 fatores: Performance (crítica → nativo), Tempo de desenvolvimento (urgente → híbrido), Orçamento (nativo custa mais recursos) e Experiência do usuário (nativo oferece a melhor).
Tópico
O que é Kotlin e sua história
Resumo: Kotlin é uma linguagem moderna e concisa, desenvolvida pela JetBrains, lançada em 2011. Ganhou força em 2017 quando o Google anunciou suporte oficial ao Kotlin para desenvolvimento Android, tornando-se hoje a linguagem oficial recomendada (substituindo o Java nesse papel).
Tópico
Principais características do Kotlin
Resumo: Segurança de nulabilidade (evita NullPointerException), sintaxe concisa, lambda expressions, integração perfeita com Java (interoperabilidade — dá para chamar código Java do Kotlin e vice-versa), permite migração gradual de projetos Java, e suporta compartilhamento de código entre plataformas (Kotlin Multiplatform).
Tópico
Variáveis: val vs var
Resumo:
val declara uma variável imutável (não pode ser reatribuída depois de criada — como um "final" do Java). var declara uma variável mutável (o valor pode mudar). Kotlin também tem inferência de tipo: não é obrigatório escrever o tipo, o compilador deduz sozinho (ex.: val idade = 22 já é um Int).Tópico
Casting (conversão de tipos)
Resumo: Para converter um valor de um tipo para outro usa-se funções como
.toDouble(), .toFloat(), .toInt() e .toString(). Exemplo: val y: Double = x.toDouble() converte um Int para Double.Tópico
Nulabilidade e Safe Call
Resumo: Em Kotlin, uma variável só pode receber
null se for declarada com ? depois do tipo (ex.: var nome: String? = null). Para acessar propriedades com segurança usa-se o safe call ?. (retorna null em vez de quebrar o app se a variável for nula). Já o operador !! força o acesso e lança uma exceção se o valor for nulo — deve ser usado com cautela.Tópico
Estruturas de controle: if/else e when
Resumo: Além do
if/else tradicional, o Kotlin tem o when, que é mais conciso e legível para tratar múltiplas condições/valores possíveis de uma expressão (substitui um if-else-if longo). Cada ramo usa -> e o else trata o caso não previsto.Tópico
Estruturas de repetição: for e while
Resumo: O
for (i in lista) percorre cada item de uma coleção. O while (condição) repete enquanto a condição for verdadeira. Kotlin também tem lambdas para percorrer coleções de forma funcional, como lista.forEach { item -> ... }.Tópico
Funções em Kotlin
Resumo: Declaradas com
fun nome(parametros): TipoRetorno { ... }. Quando a função não retorna nada, o tipo de retorno é Unit (equivalente ao "void" de outras linguagens), e geralmente pode ser omitido.Tópico
POO em Kotlin: classes, objetos e data class
Resumo: Uma
class é o modelo para criar objetos. Kotlin permite declarar propriedades já no construtor primário: class Jogo(val titulo: String, val capa: String). A data class é uma classe pensada para guardar dados (ex.: data class Tarefa(val titulo: String, var status: String)), gerando automaticamente métodos úteis como toString, equals, etc.Tópico
Ecossistema Kotlin
Resumo: Kotlin não é só para Android: também é usado em Backend (integrando com frameworks como Spring) e em Kotlin Multiplatform, que permite compartilhar código entre Android, iOS e Web.
Aula 2 — Android Studio e Estrutura de Projeto
Tópico
Android Studio e o SDK
Resumo: Android Studio é a IDE oficial para desenvolvimento Android. Junto dela vem o Android SDK (Software Development Kit) — o kit com todas as ferramentas, APIs, bibliotecas e emuladores necessários. O SDK já vem instalado junto com o Android Studio, sem necessidade de instalação separada.
Tópico
Estrutura de um projeto Android
Resumo: Dentro do projeto existe a pasta java (onde ficam os arquivos Kotlin/código do app, dentro do pacote com nome reverso do domínio, ex.: br.com.instituicao.helloworld) e a pasta res (resources), que guarda layouts, imagens e valores.
Tópico
Gradle: build.gradle do projeto x do módulo
Resumo: O Gradle automatiza a compilação e gerencia dependências. O
build.gradle do projeto guarda configurações gerais (repositórios, versão do plug-in, versão do Kotlin). Já o build.gradle do módulo (app) guarda configurações específicas do aplicativo: versão mínima do sistema, versão de compilação e bibliotecas usadas.Tópico
Pasta res: layout, colors.xml e strings.xml
Resumo: Em
res/layout ficam os arquivos XML de tela (ex.: activity_main.xml). Em res/values ficam colors.xml (cores nomeadas, ex.: @color/button_color) e strings.xml (textos nomeados, ex.: @string/mensagem_erro) — centralizando esses valores para uso global no app.Tópico
Emulador vs dispositivo físico
Resumo: O emulador permite testar em várias versões/modelos sem precisar de aparelho físico, mas consome bastante hardware do computador. O celular real dá uso real e acesso a recursos nativos, mas depende de configurar a depuração USB e tem versão única de sistema instalada.
Tópico
Activity e a classe R
Resumo: Uma Activity representa uma tela do app. A classe principal costuma se chamar MainActivity e usa
setContentView(R.layout.activity_main) dentro de onCreate() para definir o conteúdo visual. A classe R (de "Resources") é gerada automaticamente e permite acessar recursos como R.layout.activity_main, R.color.azul, R.drawable.background.Tópico
Views principais: TextView, EditText, Button
Resumo: Todas as Views (componentes visuais) derivam da classe View. TextView exibe texto na tela; EditText é uma caixa de texto editável (entrada do usuário); Button cria um botão clicável. Todas exigem as propriedades
layout_width e layout_height, que podem ser match_parent (ocupa todo o espaço do pai), wrap_content (ajusta ao conteúdo) ou um valor fixo em dp.Tópico
findViewById e setOnClickListener
Resumo: Para manipular no Kotlin um componente definido no XML, primeiro é preciso dar um
android:id a ele e depois localizá-lo com findViewById<Tipo>(R.id.nome_id). Para reagir a cliques, usa-se botao.setOnClickListener { ... }, executando o código dentro das chaves quando o botão é clicado.Tópico
Data binding manual (ligando campos e calculando)
Resumo: Um padrão comum é ler o valor de um
EditText com .text.toString(), converter para número com .toInt() ou .toDouble(), processar e depois atribuir o resultado a um TextView.text para exibir na tela — tudo dentro do setOnClickListener de um botão.Tópico
Versionamento com Git/GitHub
Resumo: O Android Studio tem integração nativa com controle de versão pelo menu VCS → Share Project on GitHub, permitindo criar o repositório remoto e autenticar direto pela IDE (via JetBrains/GitHub OAuth), sem precisar sair do ambiente de desenvolvimento.
Aula 3 — Navegação entre Telas (Activities e Intents)
Tópico
O que são Intents
Resumo: Intent é o objeto "mensageiro" que permite comunicação entre componentes do Android. Serve para: iniciar novas Activities, passar dados entre telas, iniciar serviços e enviar broadcasts para o sistema.
Tópico
Iniciando uma nova Activity
Resumo: Cria-se um Intent apontando para a Activity de destino e chama-se
startActivity():val intent = Intent(this, SegundaActivity::class.java)
startActivity(intent)Tópico
Passando dados entre Activities
Resumo: Usa-se
intent.putExtra("chave", valor) na Activity de origem para enviar um dado, e intent.getStringExtra("chave") (ou o getter equivalente ao tipo) na Activity de destino para recuperá-lo. É essencial usar a mesma chave nos dois lados.Tópico
Pilha de navegação (back stack)
Resumo: Cada vez que uma Activity abre outra, a nova é empilhada sobre a anterior (back stack). Isso significa que abrir Activities sem controle pode acumular várias na pilha, consumindo memória RAM desnecessariamente — por isso é importante saber quando usar
finish() para retirar uma Activity da pilha.Tópico
Ciclo de vida da Activity
Resumo: Sequência principal:
onCreate() → onStart() → onResume() (Activity em execução/visível) → onPause() (perde foco) → onStop() (não está mais visível) → onDestroy() (finalizada). Se o usuário volta à Activity depois de parada, passa por onRestart() antes de onStart() de novo. Esse ciclo é um dos temas mais cobrados em prova.Tópico
Duas formas de definir o conteúdo da tela
Resumo: 1) Montar o layout inteiro em código Kotlin e passar direto no
setContentView(objeto) — só se vê o resultado ao rodar o app, e mistura layout com lógica. 2) Usar um arquivo XML separado (o mais comum) e referenciá-lo com setContentView(R.layout.activity_main) — separa responsabilidades e permite usar a pré-visualização (Preview) do Android Studio.Tópico
AndroidX e AppCompatActivity
Resumo:
AppCompatActivity (do pacote androidx.appcompat.app) não faz parte do SDK puro do Android, e sim da biblioteca AndroidX (parte do Android Jetpack). Ela existe para dar retrocompatibilidade, permitindo usar recursos modernos mesmo em versões antigas do Android.Tópico
Floating Action Button (FAB) e finish()
Resumo: O Floating Action Button é um componente do Material Design (botão circular flutuante) comumente usado para abrir uma nova tela via Intent. Já o método
finish() encerra a Activity atual e a remove da pilha de navegação — muito usado em botões de "voltar".Aula 4 — DAO (Acesso a Dados)
Tópico
O que é o padrão DAO
Resumo: DAO (Data Access Object) é um padrão de projeto para abstrair a lógica de acesso a dados, separando essa responsabilidade da interface. Vantagens: organiza o código, facilita manutenção, e permite trocar a fonte de dados (banco de dados, API) sem afetar o resto da aplicação.
Tópico
Estrutura básica de um DAO
Resumo: Na prática: cria-se um pacote
dao, uma classe (ex.: ProdutoDao) com métodos para adicionar e retornar dados, geralmente usando um companion object para guardar a lista/coleção de dados de forma compartilhada.Tópico
companion object
Resumo: É a forma do Kotlin de criar membros estáticos dentro de uma classe — acessíveis diretamente pelo nome da classe, sem precisar instanciá-la. Muito usado em DAOs para manter uma lista de dados compartilhada entre chamadas.
Tópico
Log para depuração
Resumo: O Android Studio oferece a classe
Log com diferentes níveis: i (info), d (debug), e (error), v (verbose) e w (warning). Exemplo: Log.i("MinhaActivity", "onCreate: $nome") — essencial para depurar o app durante o desenvolvimento (aparece no Logcat).