Вопросы, связанные с foreground Service android

Я создаю постоянно работающую службу в Android, поэтому я думаю, что службы переднего плана - лучший вариант. У меня есть несколько общих вопросов относительно служб переднего плана в Android, поскольку я собираюсь их реализовать. Документы Google мне не помогли.

  1. Когда служба переднего плана может быть убита?
  2. Нужно ли нам определять службу переднего плана как START_STICKY?
  3. Нужно ли нам перезапускать службы переднего плана на Android BOOt или они автоматически запускаются.
  4. Сколько служб переднего плана мы можем запускать из одного и того же приложения одновременно. Я где-то очень подобострастно прочитал в документах Google, что мы можем назначить 3 службы переднего плана одновременно, что это значит?
  5. Как следует из названия, служба переднего плана прерывает основной поток или поток пользовательского интерфейса?

С уважением Утсав.


person Utsav Gupta    schedule 02.09.2014    source источник
comment
Проверьте это .. это может дать вам больше информации. commonsware.com/blog/2013/07/ 30/   -  person User12111111    schedule 02.09.2014


Ответы (1)


 1. When a foreground service can be killed?

Процесс, в котором размещается служба переднего плана, считается процессом переднего плана. Такой процесс считается самым важным и уничтожается последним. Из документов:

Как правило, в любой момент времени существует только несколько приоритетных процессов. Их убивают только в крайнем случае — если памяти так мало, что все они не могут продолжать работать. Как правило, в этот момент устройство достигает состояния подкачки памяти, поэтому для сохранения отзывчивости пользовательского интерфейса требуется завершение некоторых процессов переднего плана.

2. Do we need to define foreground service as START_STICKY?

Зависит от задачи, которую вы выполняете. Поскольку вы только что сказали, что служба работает постоянно, я думаю, она вам может понадобиться. Флаг имеет одинаковое значение как для обычного, так и для переднего плана. Флаг START_STICKY указывает, что если служба перезапускается после того, как ее хост-процесс был убит, onStartCommand службы будет вызываться с нулевым намерением. Это способ сообщить службе, что она была перезапущена.

3. Do we need to restart foreground services on android BOOt or they automatically start.

Нет. Вам необходимо зарегистрировать широковещательный приемник для Intent.ACTION_BOOT_COMPLETED. и запустите службу вручную из onReceive.

4. How many foreground services can we start from the same application at a time. 
I have read somewhere in very obsequious manner in google docs that we can nominate 3 foreground service at a time, what does that mean?

Не уверен, было бы здорово, если бы вы могли поделиться источником. Независимо от того, есть ли у вас 1 или 3 службы переднего плана, процесс, в котором она размещена, считается процессом переднего плана. Размещение нескольких служб переднего плана приводит к появлению нескольких уведомлений в строке состояния, что позволяет пользователю узнать о запущенных службах и узнать, как их остановить. Вы также можете иметь одну службу переднего плана с несколькими потоками, выполняющими разные операции.

5. As the name suggests does the foreground service interrupts the main or UI thread?

Как объяснялось выше, служба переднего плана делает процесс, на котором она размещена, приоритетным процессом, а пользователь знает об этой службе. В остальном абсолютно ничем не отличается от обычного обслуживания. Служба по умолчанию запускается в потоке пользовательского интерфейса, длительные операции должны выполняться в отдельном потоке. Если устройство имеет несколько ядерных процессоров, потоки могут или не могут работать на доступных ядрах параллельно. Вы можете прочитать этот блог, написанный @fadden. Из блога:

Иногда люди задаются вопросом, почему их многопоточное приложение не использует все доступные ядра. Обычно это происходит по двум причинам:

  1. Миграция потоков между ядрами обходится дорого с точки зрения производительности;
  2. Активация ядра ЦП стоит дорого с точки зрения батареи.

P.S. : Постоянно работающие службы всегда считаются антишаблонами в Android, поскольку они постоянно используют системные ресурсы, тем самым косвенно влияя на другие приложения. Поэтому, если вам когда-либо придется их использовать, тщательно спроектируйте их.

person Manish Mulimani    schedule 06.09.2014
comment
Спасибо за короткие и четкие ответы. И поздравляю с 50 баллами :) - person Utsav Gupta; 06.09.2014