我遇到了一个问题,那就是这个线程的相反的问题:altbeacon如何让后台服务保持活跃状态?
AltBeacon not detect beacon when app is closed
我有一个使用altbeacon(http://altbeacon.org/)
该应用程序初始化实现接口的altbeacon的应用在应用程序级别如下(详细内容略)
public class MyApp extends Application implements
BootstrapNotifier,
BeaconConsumer {
//some code
@Override
public void onCreate() {
super.onCreate();
initBeacons();
}
public void initBeacons() {
mBackgroundPowerSaver = new BackgroundPowerSaver(this);
org.altbeacon.beacon.BeaconManager altBeaconManager = org.altbeacon.beacon.BeaconManager.getInstanceForApplication(this);
altBeaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"));
// estimote
altBeaconManager.setBackgroundScanPeriod(5000);
altBeaconManager.setBackgroundBetweenScanPeriod(25000);
mBeaconManager = MyBeaconManager.getInstance(this, altBeaconManager);
mRegionBootstrap = new RegionBootstrap(this, MyBeaconManager.getRegions());
altBeaconManager.bind(this);
}
@Override
public void onBeaconServiceConnect() {
Thread thread = new Thread() {
public void run() {
// Try range the beacons
rangeMyBeacons();
}
};
thread.start();
}
@Override
public void didEnterRegion(Region region) {
// Some code
}
@Override
public void didExitRegion(Region region) {
// Some code
}
@Override
public void didDetermineStateForRegion(int i, Region region) {
// Some code
}
public class MyBeaconManager implements
RangeNotifier {
// some code
但是,如果我杀了应用程序或重启手机,没有任何特殊的广播或应用程序alt-beacon服务的权限恢复正常。换句话说,Alt-beacon始终会重新启动。请注意,我没有任何前台服务正在运行。这是几个小时后的应用程序截图(我重新启动了手机),所有应用程序关闭。您可以看到alt-beacon处于活动状态并扫描信标。
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
LogManager.i(TAG,
intent == null ?
"starting with null intent"
:
"starting with intent " + intent.toString()
);
return super.onStartCommand(intent, flags, startId);
}
我做了库中搜索,我看到没有命中START_REDELIVER_INTENT或START_STICKY。
我的问题是如何ALT-灯塔保持服务活着的时候,应用程序被杀害?
我想了解此功能的原因是,我写了类似的服务,但我只能把它做的工作为ALT信标,如果我把它包装成前景的服务。我尝试过的其他事情,只要应用程序关闭,服务就会被杀死。
谢谢。