Qu'est-ce que " Stub "et" AIDL " pour en java?

Question 1:

j'étudie le service Android et je vois souvent du code comme ceci:

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

qu'est-Ce que .Stub?

Question 2:

j'ai coché " AIDL", mais je veux savoir pourquoi nous devons utiliser cela au lieu du fichier d'interface Java?

26
demandé sur Alexander Farber 2012-05-18 11:14:47

2 réponses

'Stub' est une classe qui implémente l'interface à distance de sorte que vous pouvez l'utiliser comme s'il s'agissait d'un local. Il gère le marashallage/démontage des données et l'envoi/réception à/Depuis le service distant. Le terme 'stub' est généralement utilisé pour décrire cette fonctionnalité dans d'autres méthodes RPC (COM, Java remoting, etc.).), mais il peut signifier des choses légèrement différentes.

L'IDL (Interface Definition Language) est généralement indépendant de la langue, et vous pourriez théoriquement générer du code C++ ou Python stub à partir de celui-ci. Android est basé sur Java, donc la distinction est subtile. Une différence est que vous ne pouvez avoir qu'une seule interface .le fichier aidl, tandis que Java permet plusieurs classes/interfaces par .fichier java. Il y a aussi certaines règles pour lesquelles les types sont pris en charge, donc ce n'est pas exactement la même chose qu'une interface Java, et vous ne pouvez pas en utiliser une à la place D'AIDL.

28
répondu Nikolay Elenkov 2015-11-27 06:01:38

Hey s'il vous plaît vérifier ce http://developer.android.com/guide/components/aidl.html. Il vous aidera à comprendre stub et AIDL.

1
répondu PravinK 2012-09-18 17:50:37