通过 Android AltBeacon 库显式控制扫描的开始和停止
Controlling the starting and stopping of scan explicitly through Android AltBeacon Library
我一直在使用 Android AltBeacon 库来监控和测距附近的 iBeacon。此应用程序的一个特定要求是即使在应用程序处于后台时也允许扫描信标检测,并在应用程序关闭时完全停止。
据我所知,这个要求可以通过 BootstrapNotifier/RegionBootstrap 部分满足,但即使应用程序关闭,扫描服务也会自行重启,这是我不希望发生的。
我的解决方法是在一个单独的服务中实现所有扫描逻辑,该服务可以根据需要停止和启动。话虽如此,AltBeacon 库的核心本身就是一项服务,因此本质上我是 运行 服务中的服务,这并没有多大意义。
有没有更好的方法来做到这一点?任何想法将不胜感激。
如果您不想让库自动重新开始扫描,您可以通过像这样编辑 ApplicationManifest.xml 来禁用它的 StartupBroadcastReceiver:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" ... >
<application ... >
<receiver android:name="org.altbeacon.beacon.startup.StartupBroadcastReceiver"
tools:node="remove" />
...
但是请记住,在内存不足的情况下,操作系统会在后台从 运行 停止您的应用程序,即使用户没有明确关闭它也是如此。因此,您可能会发现,如果禁用此功能,您的应用将不会像您想象的那样在后台继续扫描信标。
我一直在使用 Android AltBeacon 库来监控和测距附近的 iBeacon。此应用程序的一个特定要求是即使在应用程序处于后台时也允许扫描信标检测,并在应用程序关闭时完全停止。
据我所知,这个要求可以通过 BootstrapNotifier/RegionBootstrap 部分满足,但即使应用程序关闭,扫描服务也会自行重启,这是我不希望发生的。
我的解决方法是在一个单独的服务中实现所有扫描逻辑,该服务可以根据需要停止和启动。话虽如此,AltBeacon 库的核心本身就是一项服务,因此本质上我是 运行 服务中的服务,这并没有多大意义。
有没有更好的方法来做到这一点?任何想法将不胜感激。
如果您不想让库自动重新开始扫描,您可以通过像这样编辑 ApplicationManifest.xml 来禁用它的 StartupBroadcastReceiver:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" ... >
<application ... >
<receiver android:name="org.altbeacon.beacon.startup.StartupBroadcastReceiver"
tools:node="remove" />
...
但是请记住,在内存不足的情况下,操作系统会在后台从 运行 停止您的应用程序,即使用户没有明确关闭它也是如此。因此,您可能会发现,如果禁用此功能,您的应用将不会像您想象的那样在后台继续扫描信标。