В каких обстоятельствах использование AIDL для определения интерфейса службы будет правильным решением (а не просто созданием расширения для service
class)?
Когда использовать услугу, основанную на помощи?
Ответ 1
Вам необходимо использовать AIDL, если вы хотите, чтобы класс вне вашего приложения выполнял доступ к Сервису. Если вы используете эту услугу только внутри своего приложения, вы можете использовать локальную службу .
Ответ 2
Простое расширение класса сервиса не позволит вашей службе подвергать свои методы внешним объектам. Если вы хотите, чтобы ваш сервис подвергался/использовался кодом, который заканчивается из вашего приложения для Android, вам необходимо определить AIDL для него. Этот AIDL будет разделяться и формироваться как контракт для вашего обслуживания. Обратитесь к http://developer.android.com/guide/components/aidl.html.
Ответ 3
1. При использовании службы, основанной на помощи.
Несколько преимуществ могут быть достигнуты сегментной частью вашего кода в бэкэнд-сервис:
- Отключить интерфейс и интерфейс
- интенсивная обработка памяти/процессора может быть уложена в backend-сервис, GC в сервисе не повлияет на внешний интерфейс пользователя.
- сбой службы не приведет к снижению всего APP
2. Как создать такую услугу
Я написал хорошую библиотеку, вы можете указать в качестве примера http://github.com/zhchang/hogwarts
Ответ 4
AIDL
Язык определения интерфейса Android (AIDL) позволяет разработчикам определять интерфейс программирования, который клиент и сервер используют для взаимодействия друг с другом с помощью межпроцессного взаимодействия (IPC).
В этой статье показано, как подключиться к работающей службе в Android и как получить данные из удаленного/запущенного сервиса.
Пример механизма IPC
Пусть RemoteService - это клиентская служба, а RemoteServiceClient - это активность для связи с удаленной службой.
Одна служба предоставляет информацию о математических операциях, таких как сложение, вычитание и умножение для данных двух целых чисел. Чтобы показать функциональность того, что может сделать Служба, создайте файл .aidl в каталоге проекта.