Я решил задать этот вопрос после почти трехнедельного исследования.
Требование таково, что у моего приложения есть только одна фоновая служба, и оно должно все время искать устройства BLE. (Не волнуйтесь, я установил режим медленного сканирования, когда в диапазоне нет устройств BLE, в котором я приостанавливаю и возобновляю сканирование). Приложение предназначено не для всех, поскольку оно предназначено для аутентификации устройств BLE всякий раз, когда они находятся в пределах досягаемости. Надеюсь, это устанавливает ВАЖНОСТЬ службы, работающей все время. Я не могу использовать службу переднего плана (бизнес-требование).
Всякий раз, когда андроид убивает мою службу, onDestroy()
не вызывается. Поэтому лучше всего использовать диспетчер тревог, который срабатывает каждые 5 минут и проверяет, убита ли служба, и если она убита, она вызывает startService()
. Будильник какое-то время срабатывает нормально, но через случайные промежутки времени (1, 2, 3 часа) даже будильник отключается и больше не срабатывает.
Отправляю трансляцию через аларм чей onReceive()
отвечает за запуск сервиса если его убили. У меня нет обходных путей, может ли кто-нибудь объяснить или предложить, почему диспетчер аварийных сигналов дает сбой через некоторое случайное время. В настоящее время я тестирую свое приложение на nexus 6p, Galaxy s7 edge, Samsung A5, Huawei P9.
Любое дополнительное объяснение может быть предоставлено.