Когда следует использовать службу на основе помощи? - PullRequest
12 голосов
/ 26 июля 2010

При каких обстоятельствах использование AIDL для определения интерфейса службы будет правильным решением (а не просто созданием расширения для класса service)?

Ответы [ 4 ]

6 голосов
/ 26 июля 2010

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

5 голосов
/ 26 июля 2010

Простое расширение класса обслуживания не позволит вашему сервису предоставлять свои методы внешним объектам. Если вы хотите, чтобы ваш сервис отображался / использовался кодом, который заканчивается в вашем приложении для Android, вам нужно будет определить для него AIDL. Этот AIDL будет передан и будет оформлен в качестве контракта на ваши услуги. См. Это http://developer.android.com/guide/components/aidl.html.

0 голосов
/ 10 сентября 2014

AIDL

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

В этой статье показано, как подключиться к работающей службе в Android и как извлечь данные из удаленной / работающей службы.

Пример механизма IPC

Пусть RemoteService - это клиентская служба, а RemoteServiceClient - это активность для взаимодействия с удаленной службой.

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

Пример AIDL

0 голосов
/ 19 июня 2014

1.Когда использовать службу на основе aidl.

За счет сегмента кода в бэкэнд-сервисе можно получить несколько преимуществ:

  • отделить входную и заднюю часть
  • интенсивная обработка памяти / процессора может быть наложена на бэкэнд-сервис, GC в обслуживании не повлияет на работу интерфейсного пользователя
  • сбой службы не повредит все приложение

2.как создать такой сервис

Я написал хорошую библиотеку, вы можете сослаться на пример http://github.com/zhchang/hogwarts

...