重启后多次调用 didRangeBeaconsInRegion() Android 应用程序

didRangeBeaconsInRegion() call multiple times after restarts Android app

我正在开发 Android 可在信标附近进行扫描的应用程序。 第一次打开 Android 应用程序并扫描附近的信标并每 2 秒调用一次 didRangeBeaconsInRegion() 方法。

但是当我关闭应用程序然后再次启动时 didRangeBeaconsInRegion() 方法在 2 秒内调用了 2 次

第 3 次 didRangeBeaconsInRegion() 方法在 2 秒内调用了 3 次

等等....

代码片段

@Override
public void didRangeBeaconsInRegion(final Collection<Beacon> beacons, final Region region) {
    if (beacons != null) {
        Log.i("iBeacons", "beacons.size() : " + beacons.size());
    }
}

日志:

2018-12-29 21:39:40.328 26528-27120/com.test.demo I/iBeacons: beacons.size() : 0
2018-12-29 21:39:40.328 26528-27120/com.test.demo I/iBeacons: beacons.size() : 0
2018-12-29 21:39:40.328 26528-27120/com.test.demo I/iBeacons: beacons.size() : 0

2018-12-29 21:39:42.259 26528-27124/com.test.demo I/iBeacons: beacons.size() : 1
2018-12-29 21:39:42.260 26528-27124/com.test.demo I/iBeacons: beacons.size() : 1
2018-12-29 21:39:42.260 26528-27124/com.test.demo I/iBeacons: beacons.size() : 1

2018-12-29 21:39:44.229 26528-27132/com.test.demo I/iBeacons: beacons.size() : 1
2018-12-29 21:39:44.229 26528-27132/com.test.demo I/iBeacons: beacons.size() : 1
2018-12-29 21:39:44.229 26528-27132/com.test.demo I/iBeacons: beacons.size() : 1

2018-12-29 21:39:46.241 26528-27136/com.test.demo I/iBeacons: beacons.size() : 1
2018-12-29 21:39:46.241 26528-27136/com.test.demo I/iBeacons: beacons.size() : 1
2018-12-29 21:39:46.241 26528-27136/com.test.demo I/iBeacons: beacons.size() : 1

2018-12-29 21:39:48.251 26528-27138/com.test.demo I/iBeacons: beacons.size() : 1
2018-12-29 21:39:48.251 26528-27138/com.test.demo I/iBeacons: beacons.size() : 1
2018-12-29 21:39:48.251 26528-27138/com.test.demo I/iBeacons: beacons.size() : 1

2018-12-29 21:39:50.249 26528-27139/com.test.demo I/iBeacons: beacons.size() : 0
2018-12-29 21:39:50.249 26528-27139/com.test.demo I/iBeacons: beacons.size() : 0
2018-12-29 21:39:50.249 26528-27139/com.test.demo I/iBeacons: beacons.size() : 0

2018-12-29 21:39:52.241 26528-27141/com.test.demo I/iBeacons: beacons.size() : 0
2018-12-29 21:39:52.241 26528-27141/com.test.demo I/iBeacons: beacons.size() : 0
2018-12-29 21:39:52.241 26528-27141/com.test.demo I/iBeacons: beacons.size() : 0

更新二:

这里是回调代码

mBeaconManager.addRangeNotifier(this);

一旦用户允许信标扫描操作的所有必要权限,上述回调只会在应用程序中调用一次

问题: 第一次运行正常,但第二次、第三次出现问题,...重新启动。 我在应用程序第 3 次重新启动时捕获了上面的日志。

注意:清空申请表背景也正常

mBeaconManager.removeRangeNotifier(this);