2011-05-26 6 views
1

J'essaie de créer un service distant dans Eclipse en utilisant Android AIDL. J'ai créé mon fichier AIDL IRemoteService.aidl dans/src comme suit:Service à distance Android en utilisant aidl

package com.vtrandal.bluesentry; 
interface IRemoteService { 
    String getData(); 
} 

Après avoir fait construire, je reçois un fichier énorme dans IRemoteService.java/gen contenant ces classes et méthodes comme suit (il ne ressemble pas à tout ce que je l'ai vu dans la documentation):

public interface IRemoteService extends android.os.IInterface 

public static abstract class Stub extends android.os.Binder implements com.vtrandal.bluesentry.IRemoteService 

private static final java.lang.String DESCRIPTOR = "com.vtrandal.bluesentry.IRemoteService"; 

public Stub() 

public static com.vtrandal.bluesentry.IRemoteService asInterface(android.os.IBinder obj) 

public android.os.IBinder asBinder() 

public boolean onTransact(int code, android.os.Parcel data, android.os.Parcel reply, int flags) throws android.os.RemoteException 

private static class Proxy implements com.vtrandal.bluesentry.IRemoteService 

Proxy(android.os.IBinder remote) 

public android.os.IBinder asBinder() 

public java.lang.String getInterfaceDescriptor() 

public java.lang.String getData() throws android.os.RemoteException 

public java.lang.String getData() throws android.os.RemoteException; 

alors, pourquoi IRemoteService.java contient tant indésirable non mentionné dans la documentation? Comment pourrais-je savoir quoi faire avec tout cela? Comment pourrais-je savoir quoi faire de tout ça?

Répondre

3

Ceci est un code de service. Il est nécessaire de communiquer avec le client. Vous n'avez pas écrit de code pour communiquer entre le client et le service, n'est-ce pas? Ce n'est pas aussi simple, après tout, et cela est généré pour vous. C'est pourquoi tant de code.

Et la documentation traite généralement de l'API pour l'utilisateur, et non des méthodes internes de remplacement.

+0

Merci @Alex Mais aucun des codes générés n'est documenté, donc je ne peux en utiliser aucun. Pourquoi le compilateur a-t-il même besoin de me le montrer? Je ne peux pas trouver ce dont j'ai besoin. Peut-être n'ai-je même pas besoin d'AIDL puisque j'ai déjà un thread d'arrière-plan qui continue à s'exécuter (par logcat) même lorsque je passe à une autre activité. – Vince

+0

@Vince Vous n'avez pas besoin d'utiliser ce code. Tout ce que vous avez à faire est d'étendre les méthodes de stub et d'implémenter à partir de l'interface. Tout le code est là pour une utilisation par framework. Je pense que la documentation Android décrit le processus raisonnablement bien. http://developer.android.com/guide/developing/tools/aidl.html –

+0

J'ai trouvé un livre "Pro Android 2" qui documente le code généré le fichier .aidl, et je suis fondamentalement d'accord, je n'ai pas besoin de m'inquiéter à propos de ça. Merci. J'ai également appris que l'utilisation d'AIDL signifie généralement la communication entre les applications que je n'ai pas besoin de faire. Donc je n'utilise pas AIDL. – Vince

Questions connexes