Я бегу в вопрос, который является противоположностью проблема этой нити:Как альтбекон поддерживает фоновый сервис?
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
Однако, если я убить приложение или перезагрузить телефон, без каких-либо специальных передач или приложения разрешения, услуга альт-маяка возвращается живым. Другими словами, альт-маяк снова запускается сам. Обратите внимание, что у меня нет запущенных служб переднего плана. Вот скриншот приложения через несколько часов (и я перезагрузил телефон), со всеми приложениями закрыты. Вы можете видеть, что альт-маяк жив и просматривает маяки.
но когда я смотрю на код альт-радиомаяка, это не служба переднего плана
@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.
Мой вопрос в том, как альт-маяк поддерживает обслуживание, когда приложение убито?
Причина, по которой я хочу понять эту функцию, заключается в том, что я пишу аналогичную услугу, но я могу только заставить ее работать в качестве альт-маяка, если я завершу ее в службу переднего плана. Все, что я пробовал, служба убивается, как только приложение закрывается.
спасибо.