2016-08-21 144 views
1

我想在自己的过程中创建一个服务以便与不同的应用程序进行通信。如何在.aidl文件中导入第三方类

我遵循本指南http://www.donnfelker.com/rxjava-with-aidl-services/但我遇到.aidl文件问题。

这是我的AIDL接口:

// MyAidlInteface.aidl 
package my.package; 

import rx.Observable; 

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

Android的工作室给了我下面的错误,我不知道该怎么做:

couldn't find import for class rx.Observable

回答

2

这里有两个问题:

  1. 为了这个声明的工作,必须有一个 的AIDL声明。这是Android Studio错误 的来源。 AIDL不是Java。仅仅因为 rx.Observable对于Java编译器是可见的,并不意味着它对于AIDL编译器可见是 。为了您自己的理智,它使很多 有意义将您的所有AIDL放入单独的顶级源 文件夹中。如果它没有和你的Java混在一起,那么类似 这样的错误更容易被发现。
  2. 第二个问题更加难以纠正:这 为rx.Observable AIDL可见声明不得不说 是这样的:
package rx; 

parcelable Observer; 

很显然,这是行不通的。 rx.Observer不可Parcelable。为了做你正在尝试做的事情,你必须创建一个带有AIDL定义的Parcelable对象,它是Observer的代理。

+0

你能解释一下关于创建一个可观察对象的Observer(Proxy)吗?我不知道如何实现这个 –

+0

这样的东西:https://stackoverflow.com/questions/44146041/how-do-i-make-my-realm-object-a-java-object/44210668#44210668 –