Accord to Android's documentation on geofences, the geofence should trigger when the user enters, dwells, or exits the geofence with respect to the asked request.
BUT, testing the geofence feature myself, a geofence will only trigger if an app requests the user's location. Simply using the tutorials code and moving the device into the geofence WILL NOT trigger the geofence. I have to open Google maps or some other app that will request the user's location, which I assume notifies Google play services, which then fires my geofence. Is this really how are geofences are designed? Proof that this is how geofences work I found from this answer. (Note: I am also using a Broadcast Receiver like the accepted answer in that link. The receiver does not trigger unless a location request is made within the geofence.)
I don't want to have a persistent background service asking for the user's location every 5 minutes just to trigger the broadcast reciever. I've thought of listening for system intents such as the user turning the screen on, disconnect from wifi, etc that would fire a service I would make that asks for the user's location. But shouldn't geofences trigger natively without extra need from my app or other apps to update the user's location?