Остановка фоновой службы Android при запуске других приложений
В настоящее время я пытаюсь сделать приложение для Android, которое никогда не заканчивается (перезапускается, когда зависает / останавливается / ударил / убил и т.д.) для определенного использования.
Поэтому я использую фоновый сервис с onTaskRemoved() для перезапуска сервиса, когда вычеркнут из недавнего списка приложений. Также START_STICKY, чтобы он работал в фоновом режиме.
Мое приложение хорошо реагирует на мой голос (показывает тост), когда на нем не так много новых приложений. Но когда некоторое время летит или есть 3~4 запущенных приложения поверх него, оно просто зависает (не отвечает на мой голос).
Есть ли способ заставить мое приложение всегда работать поверх других приложений (как всегда в верхней части списка последних приложений, который появляется при нажатии кнопки домой несколько секунд) или просто перезапустить приложение, если оно заморожено?
Пожалуйста, помогите мне. Я знаю, это может звучать странно, пытаясь создать приложение, которое никогда не заканчивается, но если вы мне поможете, это будет отличной помощью для моего проекта.
Спасибо:)
1 ответ
Для андроида не останавливайте сервис вы можете вызвать startForeground()
Однако некоторые сервисы будут пропущены пользователем, если они загадочным образом исчезнут. Например, приложение музыкального проигрывателя по умолчанию, которое поставляется с Android, использует службу для фактического воспроизведения музыки. Таким образом, пользователь может слушать музыку, продолжая использовать свой телефон для других целей. Служба останавливается только тогда, когда пользователь входит и нажимает кнопку остановки в музыкальном проигрывателе. Если эта служба неожиданно будет закрыта, пользователь может задаться вопросом, что не так.
Подобные сервисы могут объявить себя частью "переднего плана". Это приведет к повышению их приоритета и уменьшит вероятность их выбивания из памяти. Компромисс заключается в том, что сервис должен поддерживать Уведомление, поэтому пользователь знает, что этот сервис претендует на часть переднего плана. И, в идеале, это уведомление обеспечивает легкий путь к некоторой деятельности, где пользователь может остановить службу.
Для этого в onCreate() вашего сервиса (или где бы то ни было в жизни сервиса это имеет смысл), вызовите startForeground(). Это принимает Notification и локально уникальное целое число, так же, как метод notify() в NotificationManager. Это заставляет Уведомление появляться и перемещает сервис в приоритет переднего плана. Позже вы можете вызвать stopForeground(), чтобы вернуться к обычному приоритету.