Я пытаюсь создать удаленную службу в Eclipse с помощью Android AIDL. Я создал файл AIDL IRemoteService.aidl в /src следующим образом:
package com.vtrandal.bluesentry;
interface IRemoteService {
String getData();
}
После выполнения сборки я получаю огромный файл IRemoteService.java в /gen, содержащий эти классы и методы следующим образом (он не похож на все, что я видел в документации):
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;
Итак, почему IRemoteService.java содержит столько мусора, о котором не упоминалось в документации? Как я мог знать, что делать со всем этим? Как я мог знать, что с ним делать?
Это код заглушения службы. Это необходимо для общения с клиентом. Вы не писали какой-либо код для общения между клиентом и службой, не так ли? Это не так просто, в конце концов, и оно создается для вас. Вот почему так много кода.
В документации обычно обсуждается API для пользователя, а не внутренние методы.