Подтвердить что ты не робот

Сервис или связанный сервис?

Я создаю приложение, которое подключается к XMPP-серверу на Android. Я хочу сохранить соединение до выхода пользователя из системы.

Должен ли я использовать обычную службу или связанную службу, чтобы поддерживать соединение?

Приветствуются любые советы, советы и полезная информация.

4b9b3361

Ответ 1

Мне нравится это объяснение:

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

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

Итак, как вы сказали, если вы хотите взаимодействовать с сервисом, связанным с сервисом. С запущенными службами (или службами намерений) вы можете это сделать, только для этого потребуется более сложное программирование. (Douglas Schmidt: https://www.youtube.com/watch?v=cRFw7xaZ_Mg (11'10 '')):

Вот краткое изложение, которое помогло мне понять (спасибо Дагу): enter image description here

Наконец, последнее звено, которое помогло мне: http://www.techotopia.com/index.php/An_Overview_of_Android_Started_and_Bound_Services

Запущенные сервисы запускаются другими компонентами приложения (такими как активность или даже широковещательный приемник) и потенциально запускаются бесконечно в фоновом режиме до тех пор, пока служба не будет остановлена ​​или не будет уничтожена системой времени выполнения Android чтобы освободить ресурсы. Служба будет продолжать работать, если приложение, которое запустило ее, больше не находится на переднем плане и даже в том случае, если компонент, изначально запустивший службу, уничтожен

A связанная служба похожа на запущенную службу, за исключением того, что запущенная служба обычно не возвращает результаты или не разрешает взаимодействие с компонентом, который ее запускал. С другой стороны, связанная служба позволяет компоненту запуска взаимодействовать и получать результаты от службы.

Ответ 2

Связанная служба - это сервер в интерфейсе клиент-сервер. Связанная служба позволяет компонентам (таким как действия) связываться с сервисом, отправлять запросы, получать ответы и даже выполнять межпроцессную связь (IPC). Связанная служба обычно живет только тогда, когда она обслуживает другой компонент приложения и не работает в фоновом режиме неопределенно.

Если весь код существует в одном действии от пользователя, подключенного к выходу пользователя, перейдите для связанного сервиса

Но если это код существует в нескольких действиях, попробуйте с сервисом

Ответ 3

Я узнал разницу между ними и когда их использовать. Если вы хотите взаимодействовать с сервисом (например, отправлять аргументы и т.д.), Используйте связанный сервис и возвращайте объект службы в методе onServiceConnected (где вы можете вызывать методы в службе). Вы не можете взаимодействовать с обычной службой (из другого класса)