В связанной службе, когда я блокирую устройство после остановки службы на 70-80 секунд, я тестирую realme 3 pro и one plus 5, оба имеют API 9 PIE. Как поддерживать работу службы до тех пор, пока приложение не будет в недавней активности. Даже службы переднего плана также остановлены. Заранее спасибо.
служба привязки останавливается через 1 или 2 минуты, когда телефон заблокирован на некоторых устройствах, таких как oppo, устройство one plus
Ответы (3)
Realme, Oneplus, Samsung, Xiaomi, Huawei и некоторые другие производители имеют собственный уровень «Экономия заряда батареи» или «Безопасность», который убивает или ограничивает фоновые приложения, чтобы улучшить безопасность / резервное копирование батареи, если только пользователь не внесет ваше приложение в белый список. в соответствующих настройках устройства.
Что я узнал о Xiaomi, так это то, что они вносят в белый список известные приложения, такие как Facebook, Whatsapp и т. д. Но вы не можете попросить Xiaomi внести ваше приложение в белый список.
Эти приложения производителей просто завершают процесс вашего приложения. Таким образом, ваше приложение должно вести себя таким образом, чтобы завершение в любой момент не приводило к несогласованному состоянию.
Кроме того, вы всегда можете показать всплывающее окно пользователю после установки с просьбой перейти и добавить ваше приложение в белый список в режиме энергосбережения. В Xiaomi пользователю нужно будет выбрать «Не ограничивать фоновую активность», а также включить «Автозапуск» для вашего приложения. Насколько я знаю, другого решения нет.
Заключение. Посетите https://dontkillmyapp.com и посмотрите, как приложения входят в белый список для вашего OEM-производителя. После внесения в белый список он будет работать как положено. Но в реальном мире его убьют, и пользователи не будут вручную вносить его в белый список.
Пользовательские ПЗУ имеют свои собственные приложения безопасности, и они закрывают службу приложений, когда вы удаляете ее недавно или через несколько минут.
Чтобы ваше приложение продолжало работать в фоновом режиме, вы должны включить автозапуск из настроек.
Обратитесь к этому: Как чтобы исправить проблему, из-за которой активность автоматически прекращается через несколько минут в новой версии, например, vivo и oppo
Столкнувшись с той же проблемой в течение длительного времени, попробуйте добавить FCM
в свое приложение и запустить службу напрямую из него или установить сигнал тревоги и запустить службу. В некоторых случаях вышеуказанное решение работает. Я добавил вышеуказанное решение в 4 проекта, но преуспел только в 1.
Проблемы, которые я обнаружил при преодолении проблемы с firebase.
- Уведомление Firebase приходит в приложение, но фоновая служба не запускается
- Уведомление Firebase не приходит в приложение
- Приходит уведомление Firebase, и служба запускается с широковещательного приемника (иногда служба не запускается напрямую из
onMessageReceived()
метода Firebase, поэтому я решил установить широковещательный приемник), но иногда он перестает работать.
Проблема, которую я обнаружил без внедрения Firebase
- Если мы настроим фоновую службу на запуск каждые 5 минут, чем на 1-2 часа, она будет работать с интервалом 5 минут, но через 2 часа временной интервал увеличится, и служба будет работать с интервалом 15 минут, а на некоторых устройствах она будет работать с интервалом 20-30 минут. интервал (я нашел это в нужное время, потому что телефон может работать в идеальном режиме).
- Как упоминалось в вашем вопросе, иногда любая из вышеперечисленных реализаций не работает.
Совет: что я нашел в журнале системных тревог?
- Я установил будильник на 2019-08-08 11:07:00, который не сработал, а текущее время 2019-08-08 11:10:00, но он отображается в ожидании в журнале системных тревог.
Вы можете проверить систему на все тревоги, установленные вашими приложениями.
D:\SDK\platform-tools>adb shell dumpsys alarm