Кто-нибудь может объяснить метод Service setForeground?

#android #service

#Android #Обслуживание

Вопрос:

Я хотел бы узнать больше о setForeground() методе в Service классе.

Кто-нибудь может объяснить это подробно?

Ответ №1:

setForeground() не рекомендуется, и я думаю, что просто не работает на более новых версиях Android. Вместо этого вы хотите более новый startForeground() .

Цитирую себя из одной из моих книг:

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

Подобные сервисы могут объявлять себя частью «переднего плана». Это приведет к повышению их приоритета и уменьшит вероятность того, что им не хватит памяти. Компромисс заключается в том, что служба должна поддерживать Notification , чтобы пользователь знал, что эта служба претендует на часть переднего плана. И, в идеале, это Notification обеспечивает простой путь обратно к некоторому действию, где пользователь может остановить службу.

Чтобы сделать это в onCreate() вашем сервисе (или где-либо еще в жизни сервиса это имело бы смысл), вызовите startForeground() . Для этого требуется Notification и локально уникальное целое число, точно так же, как notify() метод на NotificationManager . Это приводит к появлению Notification и переводит службу в приоритет переднего плана. Позже вы можете вызвать stopForeground() , чтобы вернуть обычный приоритет.

Комментарии:

1.да, Service.setForeground () теперь устарел и в версии 2.0 ничего не делает.