AltBeacon documentation说我需要在Application onCreate()中初始化库以进行后台监控。
但是我有在运行时初始化它所需的数据。
特别是在运行时(在远程http服务调用之后),我知道:
此外,如果某些条件发生变化(远程配置),我可能需要完全关闭它。
使用当前版本的库(2.5+)处理此用例的正确方法是什么?
答案 0 :(得分:3)
使用Android Beacon Library在后台检测信标时,您可以在自定义Application类中构建RegionBootstrap
类,如示例的Starting an App in the Background部分所述。
此示例显示在Region
方法中设置初始onCreate
,但没有理由这需要像示例中那样是静态的。欢迎您执行代码来调用服务,以获取有关是否应启动信标扫描以及Region
定义中应使用哪些标识符的信息。如果您在响应Web服务调用之后将其放入,则只需将此行代码移动到该回调中:
regionBootstrap = new RegionBootstrap(this, region);
为了使用自定义Application
类,第一个参数仍然需要是对该类的引用。另请注意,此类的替代构造函数采用Regions
列表,以防您需要监视更多内容。
如果您想要更改以后监控的区域,那么最简单的方法是使用以下调用:
BeaconManager.getInstanceForApplication(context)
.stopMonitoringBeaconsInRegion(oldRegion);
BeaconManager.getInstanceForApplication(context)
.startMonitoringBeaconsInRegion(newRegion);
请注意,也可以在初始设置中使用上述技术。您可以在Application
onCreate
方法中构造一个虚拟区域来实例化RegionBootstrap
,然后在从Web服务获得回调时使用上面的方法调用来配置不同的区域。 / p>
请注意,停止监视区域时,需要引用该区域。这不需要是同一个对象 - 唯一对于停止监控而言真正重要的是Region
类'唯一标识符。这是一个String
字段,用作标识Region
的键。在下面的示例中,该唯一标识符为" com.example.myapp.boostrapRegion"。
Region region = new Region("com.example.myapp.boostrapRegion", null, null, null);