0

我有一个 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)
4

0 回答 0