Документ Android Binder содержит простой пример того, как передать объект Rect через интерфейс Binder. Мне интересно, как выполнить моделирование, если у самого объекта есть некоторые методы, которые также определены интерфейсом AIDL?
Например, проект A владеет MusicStoreManager, проект B владеет MusicStore и Music, взаимодействие осуществляется через Binder IPC.Я использую IMusicStore.aidl определяет метод "IMusic getMusic (int musicId)", а IMusic.aidl определяет метод "byte [] getMusicData (int from, int to)", но я застрял здесь:
Как смоделировать класс Music, интерфейс IMusic и IMusic.stub для проекта B в целом?
Следует или МОЖЕТ ли метод getMusic () вернуть экземпляр IMusic.Stub или экземпляр Music в следующем коде?
Как понять IMusic.Stub?
Должен ли класс Music реализовывать интерфейс IMusic, а также Parcelable?
Большое спасибо - я в замешательстве.
public class MusicStoreService extends Service {
...
protected static final IMusicStore.Stub store = new IMusicStore.Stub() {
...
public IMusic getMusic(int id) throws RemoteException {
return new Music(id); // or return new IMusic.Stub() ???
}
}
...
protected static final IMusic.Stub music = new IMusic.Stub() {
...
public byte[] getMusicData(int from, int to) throws RemoteException {
// open the associated file, read the data within range, return it back.
}
}
...
}
public class Music extends Object implements Parcelable, IMusic {
...
public byte[] getMusicData(int from, int to) throws RemoteException {
// open the associated file, read the data within range, return it back.
}
...
}