Qual é a diferença entre um ouvinte e um receptor (Android)?

Por exemplo, preciso de um BroadcastReceiver para obter esses eventos:

REINICIALIZAR ou DESLIGAR

TELA ON ou OFF

estado da bateria (tensão, conectado, temperatura)

botão físico pressiona (câmera, mídia, etc.)

Mas eu preciso do Listener para obter esses eventos:

EventListener para eventos do sensor (aceleração, campos magnéticos, orientação, proximidade, temperatura, nível de luz, etc.)

LocationListener para eventos de localização (localização de rede, GPS)

Parece que ambos os Receptores e Ouvintes existem para que eu possa receber eventos. Além das óbvias diferenças semânticas, quais são as diferenças entre os dois? Há coisas que eu posso fazer em um, mas não no outro, especialmente no que diz respeito a quanta CPU eu posso pegar e correr enquanto a tela está desligada? Por que existem dois construtos totalmente diferentes para o propósito de receber eventos?

questionAnswers(4)

yourAnswerToTheQuestion