Что такое " заглушка "и" AIDL " для java?
Вопрос 1:
Я изучаю сервис Android и часто вижу такой код:
private ISampleService.Stub sampleServiceIf = new ISampleService.Stub(){}
что это .Stub
?
Вопрос 2:
Я проверил "AIDL по", но я хочу знать, почему мы должны использовать это вместо файла Java-интерфейс?
2 ответов
'Stub' - это класс, который реализует удаленный интерфейс таким образом, что вы можете использовать его как локальный. Он обрабатывает данные marashalling / unmarshalling и отправки / получения в / из удаленной службы. Термин "заглушка" обычно используется для описания этой функции в других методах RPC (com, Java remoting и т. д.), но это может означать несколько разные вещи.
IDL (язык определения интерфейса), как правило, не зависит от языка, и вы можете теоретически создайте из него код заглушки C++ или Python. Android one основан на Java, поэтому различие тонкое. Единственное различие заключается в том, что вы можете иметь только один интерфейс .файл aidl, в то время как Java допускает несколько классов/интерфейсов .Java-файл. Есть также некоторые правила, для которых поддерживаются типы, поэтому это не совсем то же самое, что интерфейс Java, и вы не можете использовать его вместо AIDL.
Эй, пожалуйста, проверьте этоhttp://developer.android.com/guide/components/aidl.html. Это поможет вам понять stub и AIDL.