AltBeacon 文档说,我需要初始化应用程序onCreate()中的库,以便进行后台监视。
但是我有在运行时初始化它所需的数据。
特别是在运行时(在远程http服务调用之后),我知道:
此外,如果某些条件发生变化(远程配置),我可能需要完全关闭它。
使用当前版本的库(2.5+)处理这个用例的正确方法是什么?
发布于 2015-07-23 13:43:51
当使用Android灯塔图书馆检测背景中的信标时,可以在自定义应用程序类中构造一个RegionBootstrap类,如示例的在后台启动应用程序部分所述。
这个示例显示了在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服务获得回调时使用上面这样的方法调用来配置不同的调用。
注意,当停止对某个区域的监视时,需要对该区域进行引用。这不需要是同一个对象--停止监视唯一真正重要的是Region类的唯一标识符。这是一个String字段,用作标识Region的键。在下面的示例中,唯一的标识符是"com.example.myapp.boostrapRegion“。
Region region = new Region("com.example.myapp.boostrapRegion", null, null, null);https://stackoverflow.com/questions/31588667
复制相似问题