Я использую Android Beacon Library 2.0, и у меня возникла странная проблема. с фоновой службой маяка. Я запускаю свое приложение вручную хотя бы один раз, выключаю свое устройство и перезапускаю его. Если я захожу в список запущенных приложений/сервисов, я вижу название своего приложения (1 процесс, 1 сервис), но через несколько секунд оно исчезает из списка как убитое из Android. Иногда через 2-3 минуты появляется снова, но через несколько секунд исчезает. Такое поведение не является «правилом», иногда служба работает без проблем и остается активной.
Это мой манифест:
<uses-sdk
android:minSdkVersion="17"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application
android:allowBackup="true"
android:icon="@drawable/my_drawable"
android:label="MyApp"
android:theme="@android:style/Theme.Holo"
android:name="BeaconReferenceApplication">
<activity
android:name="org.altbeacon.beaconreference.MonitoringActivity"
android:theme="@android:style/Theme.Holo"
android:label="MyApp" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="org.altbeacon.beaconreference.RangingActivity"
android:theme="@android:style/Theme.Holo"
android:label="MyApp" >
<intent-filter>
</intent-filter>
</activity>
Для тестов я использую Samsung Galaxy tab3 (Android 4.4.2) и Samsung Galaxy tab4 (Android 4.4.2).
Я попытался проверить сообщение logcat, и эти строки, возможно, могли бы что-то объяснить.
E/BeaconManager (4802): не удается связаться со службой для установки периодов сканирования
D/BeaconManager(4802): этот потребитель не привязан. привязка: org.altbeacon.beaconreference.BeaconReferenceApplication@42320918
D/BeaconManager(4802): количество потребителей теперь: 1
V/ApplicationPolicy (2365): isApplicationStateBlocked userId 0 pkgname org.altbeacon.beaconreference
D/CustomFrequencyManagerService(2365)
W/ActivityManager(2365): mDVFSHelper.acquire()
D/PhoneStatusBar(2551): setTransGradiationMode=false, mTransparentMode=false, mSemiTransparentMode=false, mMultiWindowMode=false
W/ResourceType(2365): неизвестный пакет при получении значения для номера ресурса 0x7f020000
D/StatusBarManagerService(2365): tr p:2365,o:f
W/WindowManager (2365): Token{432ad010 ActivityRecord{432ace98 u0 org.altbeacon.beaconreference/.MonitoringActivity t3}} не удалось создать начальное окно
W/WindowManager (2365): android.content.res.Resources$NotFoundException: идентификатор ресурса #0x7f020000
W/WindowManager(2365): в android.content.res.Resources.getValue(Resources.java:2354)
W/WindowManager(2365): в android.content.res.Resources.getDrawable(Resources.java:1919)
W/WindowManager (2365): в com.android.internal.widget.ActionBarView.setIcon(ActionBarView.java:1037)
W/WindowManager (2365): в com.android.internal.policy.impl.PhoneWindow.installDecor(PhoneWindow.java:3478)
W/WindowManager (2365): в com.android.internal.policy.impl.PhoneWindow.getDecorView(PhoneWindow.java:1886)
W/WindowManager (2365): в com.android.internal.policy.impl.PhoneWindowManager.addStartingWindow(PhoneWindowManager.java:2639)
W/WindowManager (2365): в com.android.server.wm.WindowManagerService$H.handleMessage(WindowManagerService.java:9140)
W/WindowManager(2365): в android.os.Handler.dispatchMessage(Handler.java:102)
W/WindowManager(2365): в android.os.Looper.loop(Looper.java:146)
W/WindowManager(2365): на android.os.HandlerThread.run(HandlerThread.java:61)
D/PointerIcon (2365): setMouseIconStyle1 pointerType: 1001iconType: 101 флаг: 0
D/PointerIcon(2365): setMouseCustomIcon IconType такой же.101
I/BeaconService(4802): beaconService версии 2.0-samsung1 запускается
I/BeaconService(4802): SDK 18 или выше. Использование собственных API-интерфейсов Android для сканирования BLE
D/PhoneStatusBar(2551): setTransGradiationMode=false, mTransparentMode=false, mSemiTransparentMode=false, mMultiWindowMode=false
W/ResourceType(2365): неизвестный пакет при получении значения для номера ресурса 0x7f020000
W/WindowManager (2365): Token{4335a9f8 ActivityRecord{4335a880 u0 org.altbeacon.beaconreference/.RangingActivity t3}} не удалось создать начальное окно
W/WindowManager (2365): android.content.res.Resources$NotFoundException: идентификатор ресурса #0x7f020000
W/WindowManager(2365): в android.content.res.Resources.getValue(Resources.java:2354)
W/WindowManager(2365): в android.content.res.Resources.getDrawable(Resources.java:1919)
W/WindowManager (2365): в com.android.internal.widget.ActionBarView.setIcon(ActionBarView.java:1037)
W/WindowManager (2365): в com.android.internal.policy.impl.PhoneWindow.installDecor(PhoneWindow.java:3478)
W/WindowManager (2365): в com.android.internal.policy.impl.PhoneWindow.getDecorView(PhoneWindow.java:1886)
W/WindowManager (2365): в com.android.internal.policy.impl.PhoneWindowManager.addStartingWindow(PhoneWindowManager.java:2639)
W/WindowManager (2365): в com.android.server.wm.WindowManagerService$H.handleMessage(WindowManagerService.java:9140)
W/WindowManager(2365): в android.os.Handler.dispatchMessage(Handler.java:102)
W/WindowManager(2365): в android.os.Looper.loop(Looper.java:146)
W/WindowManager(2365): в android.os.HandlerThread.run(HandlerThread.java:61)
D/BtGatt.GattService(3581): onScanResult() - адрес=F4:B8:5E:E4:BA:4A, rssi=-53
D/BtGatt.GattService(3581): Binder не работает - отмена регистрации клиента (5)!
E/BtGatt.GattService(3581): Исключение: android.os.DeadObjectException
W/InputDispatcher(2365): канал ~ Потребитель закрыл входной канал или произошла ошибка. события = 0x9
I/WindowState(2365): ВЫИГРАТЬ СМЕРТЬ: Window{43379c08 u0 org.altbeacon.beaconreference/org.altbeacon.beaconreference.RangingActivity}
E/InputDispatcher(2365): канал ~ Канал безвозвратно поврежден и будет удален!
W/InputDispatcher (2365): попытка отменить регистрацию уже незарегистрированного входного канала.
I/WindowState ( 2365 ): WIN DEATH: Window {43366f58 u0 org.altbeacon.beaconreference/org.altbeacon.beaconreference.MonitoringActivity}
Мое приложение правильно определяет все маяки в радиусе действия, но мне нужна работающая фоновая служба, чтобы работать в течение длительного времени. Не могли бы вы предложить мне, что я делаю неправильно?
EDIT
Я могу предположить, что если я вижу приложение с "1 процессом и 1 службой" в списке запущенных программ, служба активна и работает, и если я не вижу ее процесс не запущен?