参考点击打开链接
1 Bug
定义了XiaMan接口,并且在ServiceConnection的onConnected的方法中赋值
结果一直xiaMan对象一直是空的
后来发现是manifest对与service的<intent-filter>定义的name,没有写全
<action android:name="aidl.test.android.myaidl.MyAIDLService" />
2 AIDL介绍
1、AIDL (Android Interface Definition Language )
2、AIDL 适用于 进程间通信,并且与Service端多个线程并发的情况,如果只是单个线程 可以使用 Messenger ,如果不需要IPC 可以使用Binder
3、AIDL语法:基础数据类型都可以适用,List Map等有限适用。static field 不适用。
定义一个.aidl接口的serviceA ,会自动在gen文件夹下,生成serviceA.java,其中会有一个内部抽象类Stub
我们需要实现这个抽象类
abstract class Stub extends android.os.Binder implements serviceA
也就是那些接口函数
在activity的onStart方法中,通过Intent,开启一个service,bindService(intent, serviceConnection,Auto_CREATE);
并在serviceConnection中,onServiceConnect方法,绑定bind : xiaman = XiaMan.stub.asService(iBinder);
在onServiceDisconnect方法,解绑定