Sobes.tech
Junior

É possível não descrever alguns componentes no arquivo Manifest?

sobes.tech IA

Resposta da IA

Sim, é possível.

Alguns componentes são registrados dinamicamente ou não fazem parte diretamente do ciclo de vida padrão do Android.

Exemplos:

  • BroadcastReceiver dinâmicos: Podem ser registrados e cancelados em tempo de execução usando Context.registerReceiver().
    // Registro do BroadcastReceiver
    LocalBroadcastManager.getInstance(this).registerReceiver(myReceiver, new IntentFilter("com.example.ACTION"));
    // Cancelamento do registro
    LocalBroadcastManager.getInstance(this).unregisterReceiver(myReceiver);
    
  • Serviços iniciados implicitamente por outros componentes: Embora a maioria dos Serviços deva ser declarada no Manifest, alguns, usados dentro de componentes existentes já declarados (por exemplo, Serviço Vinculado), podem estar vinculados implicitamente sem uma declaração separada se o componente que os chama já estiver declarado. No entanto, é uma boa prática declarar todos os Serviços.
  • Alguns tipos de Worker (API WorkManager): Embora os Worker sejam declarados no Manifest como parte do WorkManager (androidx.work.impl.background.systemalarm.RescheduleReceiver, etc.), suas classes Worker personalizadas não precisam ser declaradas diretamente como <receiver> no arquivo Manifest. Você as declara no código, e o WorkManager gerencia.
    // Exemplo de criação de uma solicitação de trabalho sem declarar explicitamente o Worker no Manifest
    WorkRequest myWorkRequest = new OneTimeWorkRequest.Builder(MyWorker.class).build();
    WorkManager.getInstance(this).enqueue(myWorkRequest);
    

No entanto, exceto no caso de BroadcastReceiver dinâmicos e certos casos de uso específicos, a maioria dos componentes principais (Activity, Service, ContentProvider, BroadcastReceiver estático) deve ser declarada no AndroidManifest.xml. Isso é necessário para o funcionamento correto do sistema de segurança, gerenciamento do ciclo de vida e acesso aos componentes por outros aplicativos (se exportados).