Что такое "Stub" и "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 - это Java-версия, так что различие очень тонкое. Одно отличие состоит в том, что вы можете иметь только один интерфейс в an .файл aidl, в то время как Java позволяет несколько классов / интерфейсов на .Java-файл. Существуют также некоторые правила, для которых поддерживаются типы, поэтому это не совсем то же самое, что интерфейс Java, и вы не можете использовать его вместо AIDL.
Эй, пожалуйста, проверьте это http://developer.android.com/guide/components/aidl.html это поможет вам понять stub и AIDL.