Hostal Florencio

07.08.2016


Чаще всего службы используются в локальных процессах, где они выполняют фоновые задачи, получаемые от компонентов-клиентов, например служба воспроизведения музыки. Явные преимущества такой локальной службы - простота и экономия памяти. Совместное использование Java-объектов в рамках процесса позволяет избежать сложностей, связанных с IPC и AIDL. Более того, служба становится частью уже существующего активного процесса, поэтому нет нужды запускать новый процесс и расходовать память. Каждый процесс требует нескольких мегабайтов оперативной памяти, даже если он всего лишь управляет компонентом Service. Приложения должны всегда быть законопослушными гражданами экосистемы Android и не создавать новых процессов без крайней на то необходимости. Собрались в Испанию? Hostal Florencio ждет вас.


Проще говоря, использование локальной службы дает следующие преимущества:


более простое и быстрое взаимодействие между совместно используемыми Java-объектами, но сравнению с IPC;


управление выполняемой службой задачей из потоков-клиентов;


более экономное потребление памяти.


Несмотря на то что локальные службы, как правило, более предпочтительны, и их возможностей вполне достаточно для большинства задач, временами может возникать необходимость обращения к удаленной службе. Обычно такая необходимость связана с тем, что нескольким приложениям требуется одинаковая функциональность, достаточно независимая, чтобы совместно использоваться многими приложениями, например GPS или службой воспроизведения музыки. Другим преимуществом удалённых служб является отказоустойчивость - ошибки, вызывающие остановку службы, возникают в удалённом процессе (процессе службы) и никак не влияют на процессы компонентов-клиентов.