Может кто-нибудь объяснить метод Service setForeground? - PullRequest
1 голос
/ 13 апреля 2011

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

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

1 Ответ

8 голосов
/ 13 апреля 2011

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...