我有一个 AIDL 服务,它可以完成一些基本任务。我想将该 AIDL 服务用作抽象类。因此,如果另一个类想要处理 Service 的回调,那么扩展我的服务就足够了。类和错误日志如下所示:
////////////////// AIDL服务\\\\\\\\\\\\\\
public abstract class AdditionService extends Service implements IAdd {
private final static String TAG="AdditionService";
private final Stub stub;
public AdditionService() {
Log.i(TAG, "AdditionService Constructer!");
Stub buf = new Stub() {
@Override
public int addNumbers(int num1, int num2) throws RemoteException {
return 0;
}
@Override
public List<String> getStringList() throws RemoteException {
return null;
}
@Override
public List<Person> getPersonList() throws RemoteException {
return null;
}
@Override
public void placeCall(String number) throws RemoteException {
}
};
stub = buf;
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return stub;
}
}
////////////////// 扩展类 \\\\\\\\\\\\\\
public class ClassWhichWantsHandleCallback extends AdditionService {
@Override
public int addNumbers(int num1, int num2) throws RemoteException {
return 0;
}
@Override
public List<String> getStringList() throws RemoteException {
return null;
}
@Override
public List<Person> getPersonList() throws RemoteException {
return null;
}
@Override
public void placeCall(String number) throws RemoteException {
}
@Override
public IBinder asBinder() {
return null;
}
}
////////////////// 错误日志 \\\\\\\\\\\\\\
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.chintan.aidlserver, PID: 18685
java.lang.RuntimeException: Unable to instantiate service com.chintan.aidlserver.AdditionService: java.lang.InstantiationException: java.lang.Class<com.chintan.aidlserver.AdditionService> cannot be instantiated
at android.app.ActivityThread.handleCreateService(ActivityThread.java:3292)
at android.app.ActivityThread.-wrap5(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1651)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:203)
at android.app.ActivityThread.main(ActivityThread.java:6337)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1084)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:945)
Caused by: java.lang.InstantiationException: java.lang.Class<com.chintan.aidlserver.AdditionService> cannot be instantiated
at java.lang.Class.newInstance(Native Method)