Для демонстрации примера удаленной службы мы напишем службу выдачи биржевых котировок акций (Stock-Quote Service). Эта служба предоставит метод, который получает символ акций и возвращает их стоимость. При построении удаленной службы в Android первый шаг состоит в подготовке определения интерфейса службы в файле AIDL. В листинге 15.20 приведено AIDL-определение интерфейса IStockQuoteService. Этот файл будет помещен в то же самое место, что и обычный Java-файл в проекте StockQuoteService.
Интерфейс IStockQuoteService принимает символ акций в виде строки и возвращает текущую стоимость акций как значение double. Подключаемый модуль Android Eclipse запустит компилятор AIDL для обработки AIDL-файла (как часть процесса сборки). В результате успешной компиляции AIDL-файла генерируется Java-интерфейс, подходящий для RPC-взаимодействий. Обратите внимание, что сгенерированный файл будет находиться в пакете с именем, указанным в AIDL-файле — в данном случае com.androidbook.services.stockquoteservice.
Обратите внимание на следующие важные моменты, касающиеся сгенерированных классов.
• Интерфейс, определенный в AIDL-файле, реализован в сгенерированном коде как интерфейс по имени IStockQuoteService.
• Статический финальный абстрактный класс Stub расширяет класс android. os.Binder и реализует интерфейс IStockQuoteService. Не забывайте, что Stub является абстрактным.
• Вложенный класс Proxy реализует интерфейс IStockQuoteService, который является прокси - классом для Stub.
• AIDL-файл должен находиться в пакете, предназначенном для сгенерированных файлов (как указано в объявлении пакета в AIDL-файле).