比如我写了个远程Service
public class TestService extends Service {
private IBinder mBinder=new ITest.Stub(){
@Override
public int show(int num1, int num2) throws RemoteException {
return num1+num2;
}
};
@Nullable
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
}
ITest.Stub就是AIDL工具生产的一个类。
我们在activity中bindservice时候,肯定会有public void onServiceConnected(ComponentName name, IBinder service)这个函数,这个service我debug显示是个BinderProxy,他也应该是这个类型的!
但是我追Bindservice源码的时候自己却矛盾了,因为我发现这个public void onServiceConnected函数的IBinder类型的service这个参数,其实就是我上面写的service的onbind方法的返回值。可是我onbind返回的是一个iTest.Stub extends Binder,那不应该是个binder类么??怎么就成了BinderProxy了?我也没找到哪里转换,或者构建的。
求大神解惑