I am getting same issue even after setting the scan interval didExitRegion is never called. I am using eddystone google beacon on Android and I am running beacon scanning function in android service. My code for beacon is like below:
Beacon initialization
mBeaconManager = BeaconManager.getInstanceForApplication(this.getApplicationContext());
// Detect the main Eddystone-UID frame:
mBeaconManager.getBeaconParsers().add(new BeaconParser().
setBeaconLayout("s:0-1=feaa,m:2-2=10,p:3-3:-41,i:4-21v"));
mBeaconManager.setBackgroundScanPeriod(1000l);
mBeaconManager.setBackgroundBetweenScanPeriod(3000l);
mBeaconManager.bind(this);
didEnterRegion
url = UrlBeaconUrlCompressor.uncompress(region.getId1().toByteArray());
Log.d("radbeacon", "Beacon detected with namespace id " + region.getId1() + " and instance id: " + url);
didExitRegion
url = UrlBeaconUrlCompressor.uncompress(region.getId1().toByteArray());
Log.d("radbeacon", "Beacon out of region with namespace id " + region.getId1() + " and instance id: " + url);