AIDL传入回调方法
假设现有一个service在接收数据,接收的数据要传给另一个应用的activity使用,可以通过在activity中调用service的aidl的binder接口获取到远程service接口,然后通过该接口提供的设置数据接收回调的方法设置回调对象,从而实现远程service接收数据后,由activity提供的回调对象将数据传递给到activity中(这样做的原因是:aidl是共享内存的,数据共享速度是实时的(wrong),activity传到服务端的listener对象,在到达服务端时,服务端会产生一个新的对象,这2个对象的共同点是:底层Binder是同一个。由于对象是不能跨进程直接传输的,对象的跨进程传输本质都是反序列化的过程)。
//设置回调对象的aidl
package com.test.aidl;
import com.test.aidl.InterProcessCallback;
interface IAIDLSetCallback
{
void setCallback(InterProcessCallback callback);
}
//回调接口aidl,因为InterProcessCallback在activity和service中都要使用,所以必须定义出aidl
package com.test.aidl;
interface InterProcessCallback
{
void recv(int val);
}
//service
public class AIDLService extends Service {
//回调对象