Я использую Awareness API для своего проект и получение действий через BroadcastReceiver
. Это вопрос с моим кодом: ссылка. Проблема в том, что все работает нормально на всех версиях Android, кроме устройств Xiaomi. Где BroadcastReceiver
ничего не получает через пару часов. Я пробовал много решений для этого (например, это и это и отключение экономии заряда батареи для моего приложения), но ничего не работает.
BroadcastReceiver перестает работать на Xiaomi через пару часов
Ответы (2)
При этом API сопоставляет данные из нескольких источников, чтобы обеспечить их точность и высокое качество. Он также учитывает потребление энергии и памяти при доступе к этим сигналам, помогая гарантировать, что время автономной работы и использование памяти нашими приложениями не окажут вредного воздействия на устройство пользователя.
Как говорится в этом абзаце:
Он также учитывает потребление энергии и памяти при доступе к этим сигналам.
и вы говорите:
Проблема в том, что все работает нормально на всех версиях Android, кроме устройств Xiaomi. Где BroadcastReciver ничего не получает через пару часов
Через пару часов устройство может экономить больше энергии
Вы прослушиваете «Fence API», чтобы регистрировать изменения в текущей среде пользователя, он может потреблять энергию и, следовательно, вы не получаете трансляции. Возможно, вам потребуется изменить настройки устройства, чтобы разрешить использование датчиков, таких как GPS-датчик местоположения и другие соответствующие датчики.
Я думаю, что ваша проблема связана с оптимизацией батареи. Эта функция доступна начиная с Android Marshmallow, в котором появился режим Doze. Это способ снизить расход заряда батареи для фоновых приложений, но в вашем случае вы должны отключить его для своего приложения.