一下2段代码都写在service中,其中AIDLService和MyInterface都是自己定义的。
这2种写法有什么区别,我感觉用接口就够了,为什么还搞出一个AIDL使用AIDL:private final AIDLService.Stub mBinder = new AIDLService.Stub() {
@Override
public void invokCallBack() throws RemoteException {
Rect1 rect = new Rect1();
callback.performAction(rect);
}
};public IBinder onBind(Intent t) {
return mBinder;
}
使用接口:private class MyBinder extends Binder implements MyInterface{ @Override
public void invokCallBack(String packagename) {
invokCallBack(packagename);
}}
public IBinder onBind(Intent intent) {
return new MyBinder();
}AIDL接口

解决方案 »

  1.   

    AIDL可以进程间通信而接口不行
      

  2.   

    AIDL 就是提供了远程调用的接口,跨进程通信的轻量级的调用。接口和它没有关系,二者基本没有什么联系。如果真的要说有联系的话,那么可以认为aidl是接口的一种
      

  3.   

    activity和service不是运行在同一个进程,不过用上面接口的方式编程,也可以实现activity和service的通讯。
      

  4.   

    如果是在同一个进程,那两者没有差别,都是接口调用。
    但跨进行的话,通过接口就调用不了,需要使用AIDL。
    所以使用的时候的时候要考虑有没有跨进程。
      

  5.   

    aidl只是为了让上层进行进程间通讯的调用,真正的调用是,AIDLService.Stub mBinder 这个binder引用对象, 给你看个图解,这个你应该可以大体明白,client就是你应用程序接口,server就是你需要远程调用的应用程序接口;而中间,就是如何通讯的,很复杂的,我也不是很懂!!