For instance, I need a BroadcastReceiver to get these events:
REBOOT or SHUTDOWN
SCREEN ON or OFF
battery status (voltage, plugged in, temperature)>
Both Listeners and Receivers act as trigger handlers, however, it is the origin and characteristics of these triggers that separates them.
(Broadcast) Receivers are triggered by Intents. The origin of these Intents can come from outside the context of your own application. Thus, it is a way for applications to implement Inter-Process Communication.
In addition, applications do not need to be running to receive Intents. Intents can act as an alarm clock to wake applications up when an event has been triggered. This saves battery and cpu.