Sobes.tech
Middle

Que tipos de BroadcastReceiver você conhece?

sobes.tech IA

Resposta da IA

  1. Transmissão Ordenada:

    • A transmissão é entregue aos destinatários sequencialmente, um após o outro.
    • Cada destinatário pode processar ou modificar o resultado da transmissão, bem como interrompê-la para que não chegue aos destinatários seguintes.
    • A ordem de entrega é determinada pela prioridade do destinatário (android:priority no manifesto).
  2. Transmissão Normal:

    • É o tipo mais comum.
    • A mensagem de difusão é enviada imediatamente a todos os destinatários interessados, registados tanto de forma declarada (no manifesto) como dinamicamente (através de Context.registerReceiver()).
    • A ordem de receção das mensagens não é garantida.
    • O destinatário não pode parar a propagação da mensagem.
  3. Transmissão Local:

    • Usada para trocar mensagens apenas dentro de uma mesma aplicação.
    • Implementada pela classe LocalBroadcastManager.
    • É mais eficiente e segura, pois as mensagens não saem da aplicação e não afetam outras aplicações no sistema.
    • Não requer declarar destinatários no manifesto.
    • Reduz a carga no sistema em comparação com transmissões globais.
// Exemplo de registo de um BroadcastReceiver dinâmico
BroadcastReceiver myReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Lógica de processamento da mensagem
    }
};

IntentFilter filter = new IntentFilter("MY_ACTION");
registerReceiver(myReceiver, filter);

// Exemplo de envio de Transmissão Normal
Intent broadcastIntent = new Intent("MY_ACTION");
sendBroadcast(broadcastIntent);

// Exemplo de uso do LocalBroadcastManager
// Obtenção da instância
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);

// Registo
localBroadcastManager.registerReceiver(myReceiver, filter);

// Envio
localBroadcastManager.sendBroadcast(broadcastIntent);

// Exemplo de envio de Transmissão Ordenada
// sendOrderedBroadcast(orderedBroadcastIntent, null); // Pode indicar permissão