title: What is the difference between a Listener and a Receiver (Android)?
body: <p>For instance, I need a BroadcastReceiver to get these events:</p>
  
  <p>REBOOT or SHUTDOWN</p>
  
  <p>SCREEN ON or OFF</p>
  
  <p>battery status (voltage, plugged in, temperature)</p>
  
  <p>physical button presses (camera, media, etc.)</p>
  
  <p>But I need  Listener to get these events:</p>
  
  <p>EventListener for sensor events (acceleration,magnetic fields, orientation, proximity, temperature, light level, etc.)</p>
  
  <p>LocationListener for location events (Network location, GPS)</p>
  
  <p>It seems like both Receivers and Listeners both exist so that I can receive events.  Other than the obvious semantic differences, what are the difference between the two?   Are there things I can do in one but not the other, especially in regards to things like how much CPU I can take and running while the screen is off?  Why are there two totally different constructs for the purposes of receiving events?  </p>