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