2016-08-21 3 views
1

Je souhaite créer un service dans son propre processus afin de communiquer avec différentes applications.Comment importer des classes tierces dans le fichier .aidl

Je suis ce guide http://www.donnfelker.com/rxjava-with-aidl-services/ mais j'ai un problème avec le fichier .aidl.

Ceci est mon interface AIDL:

// MyAidlInteface.aidl 
package my.package; 

import rx.Observable; 

interface MyAidlInterface { 
    Observable<Integer> getPid(); 
} 

Android studio me donne l'erreur suivante et je ne sais pas quoi faire:

couldn't find import for class rx.Observable

Répondre

2

Il y a deux problèmes ici:

  1. Pour que cette déclaration fonctionne, il devrait y avoir un Déclaration AIDL pour rx.Observable. C'est la source de l'erreur AndroidStudio. AIDL n'est pas Java. Tout simplement parce que rx.Observable est visible pour le compilateur Java ne signifie pas qu'il est visible au compilateur AIDL. Pour votre propre santé mentale, il fait un sens de mettre tous vos AIDL dans un dossier source de premier niveau séparé . S'il n'est pas mélangé avec votre Java, alors les erreurs comme celle-ci sont beaucoup plus faciles à repérer: .
  2. Le deuxième problème est beaucoup plus difficile à corriger: Cette déclaration AIDL visible pour rx.Observable aurait à dire quelque chose comme:
package rx; 

parcelable Observer; 

De toute évidence, qui ne fonctionnera pas. rx.Observer n'est pas séparable. Pour faire ce que vous essayez de faire, vous devrez créer un objet Parcelable avec une définition AIDL, c'est-à-dire un proxy au Observer.

+0

pouvez-vous s'il vous plaît expliquer sur la création d'un objet parcelable de l'observateur (proxy)? Je ne sais pas comment y parvenir –

+0

Quelque chose comme ceci: https://stackoverflow.com/questions/44146041/how-do-i-make-my-realm-object-a-java-object/44210668#44210668 –