Структура объекта Service

Структура объекта Service

Структура объекта Service в чем-то похожа на структуру активности. Здесь предусмотрены методы onCreate(), где можно выполнять инициализацию, и onDestroy(), в котором обычно производится очистка. До выхода Android 2.0 класс службы имел метод onStart(), а в версии 2.0 появился метод onStartCommand(). Отличие между ними в добавленном параметре флагов, который используется для указания службе, что намерение находится в процессе доставки или что служба должна быть перезапущена. В рассматриваемом примере применяется onStartCommand(). Службы не поддерживают паузы и возобновления, как это есть у активностей, поэтому методы вроде onPause() или onResume() отсутствуют. Поскольку служба является локальной, к ней не нужна привязка, но класс Service требует реализации метода onBind(), так что в нем просто возвращается null.

В методе onCreate () мы не должны делать ничего, кроме уведомления пользователя о том, что служба создана. Это делается с использованием NotificationManager. Возможно, вы заметили панель для уведомлений в верхнем левом углу экрана Android. Раскрыв эту панель, пользователь может просматривать сообщения по их важности и щелкать на уведомлениях для взаимодействия с ними, что обычно означает возврат к активности, связанной с уведомлением. В случае служб, поскольку они могут быть запущены или, по крайней мере, существовать в фоновом режиме без видимой активности, должен быть предусмотрен способ возврата к взаимодействию со службой, возможно, для ее отключения. Таким образом, мы создаем объект Notification, заполняем его посредством намерения PendingIntent, которое вернет управление активности, и отправляем его. Все это происходит в методе displayNotificationMessage (). Важно также установить флаг на объекте Notification, который не позволит пользователю удалить этот объект его из списка. Объект Notification должен существовать, пока существует служба, поэтому мы устанавливаем флаг Notification.FLAG_NO_CLEAR, чтобы сохранить объект в списке уведомлений до тех пор, пока он явно не будет очищен в методе onDestroy() службы. Для очистки уведомления в onDestroy() применяется метод cancelAll() класса NotificationManager.

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в Яндекс

Добавить комментарий