onEnter() and OnExit() called at time.and i am still in range of beacons area

I am using proximity beacons to track user time how to much time he spent in beacon area. When user enter in region it fire onenter() method also when it exit region it fire onexit() method. But most of time both method fire back to back and i am still in the range of beacon or my place still the and beacon and device are place near to each other. And after exit the region it takes time to fire onEnter() method sometimes more than 1 min or more.
I am using android proximity sdk 1.0.3 and
android device vivo it has android version 6.0.1
my BLUETOOTH is enable and app has location permission and device location is on.

below is my code i am using to detect user.

cloudCredentials = new EstimoteCloudCredentials("ramesh******", "385d*******");
       proximityObserver = new ProximityObserverBuilder(getApplicationContext(), cloudCredentials)
            .withBalancedPowerMode()
            .onError(new Function1<Throwable, Unit>() {
                @Override
                public Unit invoke(Throwable throwable) {
                    bluthoth_flag=false;
                    Log.e("Sample", "ERROR"+throwable.toString());
                    return null;
                }
            })
            .withBalancedPowerMode()
            .build();

    RequirementsWizardFactory
            .createEstimoteRequirementsWizard()
            .fulfillRequirements(this,
                    new Function0<Unit>() {
                        @Override
                        public Unit invoke() {
                            Log.e("app", "requirements fulfilled");
                            return null;
                        }
                    },
                    new Function1<List<? extends Requirement>, Unit>() {
                        @Override
                        public Unit invoke(List<? extends Requirement> requirements) {
                            Log.e("app", "requirements missing: " + requirements);
                            return null;
                        }
                    },
                    new Function1<Throwable, Unit>() {
                        @Override
                        public Unit invoke(Throwable throwable) {
                            Log.e("app", "requirements error: " + throwable);
                            return null;
                        }
                    });


    proximityZone=new ProximityZoneBuilder().forTag("Near To Pink Color Beacon").inNearRange()
            .onEnter(new Function1<ProximityZoneContext, Unit>() {
                @Override
                public Unit invoke(ProximityZoneContext proximityZoneContext) {
                    Log.e("ok",proximityZoneContext.getDeviceId());
                    Log.e("ok",proximityZoneContext.getTag());
                    beacon1_flag=true;
                    Toast.makeText(EstimoteBeacons_Testing.this,proximityZoneContext.getTag(),Toast.LENGTH_SHORT).show();
                    Log.e("Sample", "Eddystone IN");
                    return null;
                }
            }).onExit(new Function1<ProximityZoneContext, Unit>() {
                @Override
                public Unit invoke(ProximityZoneContext proximityZoneContext) {
                    beacon1_flag=false;
                    bluthoth_flag=false;
                    //  adapter.disable();


                    // adapter.enable();

                    Toast.makeText(EstimoteBeacons_Testing.this,"Device Lost",Toast.LENGTH_SHORT).show();
                    Log.e("Sample", "Eddystone Lost");
                    return null;
                }
            }).onContextChange(new Function1<Set<? extends ProximityZoneContext>, Unit>() {
                @Override
                public Unit invoke(Set<? extends ProximityZoneContext> proximityZoneContexts) {
                    //  Toast.makeText(EstimoteBeacons_Testing.this,"Device Still In Range",Toast.LENGTH_SHORT).show();
                    Log.e("Sample", "Eddystone ContextChnage");
                    return null;
                }
            }).build();

    observationHandler = proximityObserver.startObserving(proximityZone);