Что такое «Stub» и «AIDL» для java?

Вопрос 1:

Я изучаю Android-сервис и часто вижу такой код:

private ISampleService.Stub sampleServiceIf = new ISampleService.Stub(){} 

Что такое.

Вопрос 2:

Я проверил « AIDL », но я хочу знать, почему мы должны использовать это вместо файла интерфейса Java?

Solutions Collecting From Web of "Что такое «Stub» и «AIDL» для java?"

«Stub» – это класс, который реализует удаленный интерфейс таким образом, что вы можете использовать его, как если бы он был локальным. Он обрабатывает марафонирование / разборку данных и отправку / получение в / из удаленной службы. Термин «заглушка» обычно используется для описания этой функции в других методах RPC (COM, Java remoting и т. Д.), Но это может означать несколько разные вещи.

IDL (язык определения интерфейса), как правило, не зависит от языка, и вы можете теоретически генерировать код C ++ или Python. Android один из них основан на Java, поэтому различие является тонким. Одно из отличий заключается в том, что вы можете иметь только один интерфейс в файле .aidl, тогда как Java допускает несколько классов / интерфейсов на один файл .java. Существуют также некоторые правила, для которых поддерживаются типы, поэтому он не совсем то же, что и интерфейс Java, и вы не можете использовать его вместо AIDL.

Эй, пожалуйста, проверьте этот http://developer.android.com/guide/components/aidl.html . Это поможет вам понять заглушку и AIDL.