🚀 2.1 A execução das aplicações

As aplicações implementadas utilizando a linguagem Java no ecossistema moderno são executadas através do ART (Android Runtime), o sucessor do antigo Dalvik. O ART utiliza a compilação Ahead-of-Time (AOT) e Just-in-Time (JIT) para otimizar a performance e reduzir o consumo de bateria, transformando o bytecode em código de máquina nativo durante a instalação ou execução.

O processo de build consolida as classes compiladas e recursos (imagens, XMLs) em um arquivo .APK ou .AAB (Android App Bundle). O formato AAB é o padrão atual recomendado pela Google para distribuição na Play Store, pois permite que a loja gere APKs otimizados para cada dispositivo específico.

No sistema operacional Android, cada aplicação é executada em um processo próprio e isolado (sandbox), garantindo que falhas em um app não afetem a estabilidade global do sistema.

2.2 Conheça as Intents e Intent Filters

As Intents representam a intenção de realizar uma ação. Elas são o mecanismo de comunicação fundamental no Android, permitindo que componentes colaborem sem acoplamento direto.

Intents Implícitas

Utilizadas quando queremos que o sistema encontre o melhor aplicativo para realizar uma tarefa (ex: abrir um site). No Java 17, utilizamos var para tornar as declarações mais limpas:

// Modern Java 17 - Uso de var
var uri = Uri.parse("https://www.android.com");
var intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

Intents Explícitas

Utilizadas para navegar entre telas da mesma aplicação, onde conhecemos exatamente o componente de destino:

var intent = new Intent(this, OutraAtividade.class);
startActivity(intent);

Exemplo de Captura de Imagem (Segurança Moderna)

Em versões modernas do Android (API 24+), não podemos compartilhar file:// URIs diretamente. Devemos utilizar o FileProvider para garantir a segurança dos dados:

/* 
  • Nota: Requer configuração de FileProvider no AndroidManifest.xml
  • e paths definidos em xml/file_paths.xml */ var fotoFile = new File(getExternalFilesDir(null), “projeto_camera.jpg”); var uri = FileProvider.getUriForFile(this, “com.exemplo.fileprovider”, fotoFile);

var intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); startActivity(intent);

> [!TIP]
> 

O uso de var em Java 17 permite que o compilador infira o tipo da variável, reduzindo a verbosidade sem perder a segurança de tipos forte da linguagem.


⬅️ Capítulo Anterior | Próximo Capítulo ➡️