Активность Android и служба Bluetooth убиты в фоновом режиме - PullRequest
0 голосов
/ 14 марта 2019

Моя активность приложения Android связана со службой, которая подключается к периферийному устройству BLE и получает данные.Это происходит до тех пор, пока пользователь не нажимает кнопку в операции, чтобы отключиться от периферийного устройства и остановить службу.

Иногда после запуска с заблокированным экраном в течение ~ 45 минут + действие и служба прекращаются.Я пришел к выводу, что Android 8.1 был более агрессивным, чем предыдущие операционные системы, поэтому я изменил фоновую службу на службу переднего плана и убедился, что после подключения периферийного устройства я прекращаю сканирование.

Это не сработало,и время от времени мое приложение убивается в фоновом режиме, и я не думаю, что это неисследованное исключение.Я прочитал документы Android по сервисам и жизненному циклу приложений и добавил несколько журналов отладки в обратные вызовы жизненного цикла, которые не помогли.Я наблюдал такое поведение на Huawei Y5 и Nokia 8 под управлением Android 8.1 - я не помню, чтобы это было проблемой на старом телефоне, которого у меня больше нет.

У меня есть несколько вопросов о поведении, которое не 'Я четко документировал, что может помочь мне разобраться в этой проблеме.Спасибо за вашу помощь!

1. If an activity is killed in the background and it is bound to a service, will that kill the service?

2. If a service is killed in the background, will that kill my activity

3. If there are multiple services running and one consumes too many resources, does the OS kill everything, or just the misbehaving service?

4. What sort of things makes an activity or service a target for the OS? Holding on to wakelocks permanently? BLE scanning? Receiving too many BLE packets? Uploading too much data? Any insight here about what might be happening under the hood is appreciated.

5. Does having the phone on charge prevent the OS from killing apps? I believe it occurs in my case regardless.

1 Ответ

1 голос
/ 14 марта 2019

Существует несколько причин, по которым Android может убить вашу активность.Поэтому не стоит настраивать Bluetooth в действии.Настройте его в отдельном классе или в своем классе приложения и используйте другие способы для отправки данных в вашу деятельность, например, в эфир.Таким образом, он продолжит работать, даже если ваша активность будет уничтожена или воссоздана.

Действительно ли ваше приложение уничтожено или уничтожена только ваша Activiry?

...