Что такое Background и Foreground Service?

Посмотреть в Telegram: @AndroidSobes/25
Любой сервис, не зависимо от того Started или Bound, по умолчанию Background. Это значит, что сервис работает как фоновая задача (не путать с фоновым потоком), не требующая взаимодействия с пользователем.

Foreground Service – это сервис, о котором пользователь осведомлен. Это достигается с помощью отображения нотификации в статус-баре.
Пример foreground сервиса – отображение нотификации при проигрывании музыки в приложении-плеере.

Процесс в котором работает foreground сервис имеет больший приоритет, чем процесс с background сервисом. В примере с плеером foreground сервис выполняет сразу две функции:
1. Говорит системе, что этот процесс убивать не надо, т.к. пользователь взаимодействует с ним;
2. Обрабатывает нажатия на кнопки в нотификации.

Запущенный сервис переводится в состояние foreground методом startForeground(int id, Notification notification), принимающим параметрами id нотификации и саму нотификацию, которая будет показана пользователю. Важно знать, что startForeground() вызывается у сервиса, который уже запущен как background сервис, например методом startService().

Для перевода foreground сервиса в состояние background используется метод stopForeground(boolean removeNotification). Этот метод не останавливает сервис (нужно вызвать stopService() или stopSelf()), но увеличивает шансы того, что система убьет процесс.