Android Beacon Library - 手动启动后台扫描

时间:2018-03-13 08:11:59

标签: android ibeacon ibeacon-android

这是关于Android Beacon Library的问题。

由于Android 8(Oreo)对后台服务的限制,该库的作者已经改变了在Android 8中启动后台服务的机制。

据我所知,后台服务需要比Android 7或更低版​​本更长的启动时间,即使应用已经启动

我想做的是尽可能减少这段时间 其中一种方法是在用户打开应用程序时强制启动后台扫描 例如,我想做类似

的事情

BeaconManager.getInstanceForApplication(this).startbackgroundScanningIfNotRunning();

在MainActivity的onCreate()中。

但我认为没有这样的API。反正有吗?

或者,库是否可以自行处理(通过应用程序更新)?

1 个答案:

答案 0 :(得分:2)

虽然可以执行问题中描述的操作,但它可能没用。问题是Android 8会阻止应用程序在后台长期运行。要在后台手动启动扫描,您的应用必须首先运行。如果Android 8不允许这样做,那么无论如何你都无法做到这一点。

有关Android 8如何阻止应用程序在后台运行以及库如何解决此问题的解释,您可以阅读此博客文章,如果您还没有:  http://www.davidgyoungtech.com/2017/08/07/beacon-detection-with-android-8

如果您以某种方式设法让您的应用在后台长期运行(例如使用前台服务),您可以始终通过启动信标测距/监控来手动启动扫描前台模式(从库的角度来看),它将安排一个即时的ScanJob,它将继续运行并反复启动。要确保您处于前台模式,您只需要避免使用BackgroundPowerSaver,并且不要对beaconManager.setBackgroundMode(...)进行任何调用。

相关问题