Android удаленный сервис с помощью aidl

1

Я пытаюсь создать удаленную службу в 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 содержит столько мусора, о котором не упоминалось в документации? Как я мог знать, что делать со всем этим? Как я мог знать, что с ним делать?

Теги:
service
aidl

1 ответ

3
Лучший ответ

Это код заглушения службы. Это необходимо для общения с клиентом. Вы не писали какой-либо код для общения между клиентом и службой, не так ли? Это не так просто, в конце концов, и оно создается для вас. Вот почему так много кода.

В документации обычно обсуждается API для пользователя, а не внутренние методы.

  • 0
    Спасибо @Alex Но ни один из сгенерированного кода не задокументирован, поэтому я не могу использовать его. Почему компилятор даже не показывает его мне? Я не могу найти то, что мне нужно. Может быть, мне даже не нужен AIDL, так как у меня уже есть фоновый поток, который продолжает работать (на logcat), даже когда я переключаюсь на другое действие.
  • 0
    @ Vince Вам не нужно использовать этот код. Все, что вам нужно сделать, это расширить заглушку и реализовать методы из интерфейса. Весь код там только для использования фреймворком. Я думаю, что документация Android описывает процесс достаточно хорошо. developer.android.com/guide/developing/tools/aidl.html
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню