android aidl进程间方法的调用

android 进程的通信很多,可以用intent传递数据,可以实现数据的共享,可以通过aidl实现进程间的通信,一般如果进程间需求方法调用的时候就要实现aidl
这个说明一下aidl进程间的对象的传递。
我们先是申明一个aidl的接口的文件IWorkFlowPlugin.aidl在里面实现一个对象传递的方法,
interface IWorkFlowPlugin
{
WorkFlowBean getWorkFlowBean();
}
声明一个WorkFlowBean的java的文件,实现Parcelable接口
public class WorkFlowBean implements Parcelable
{

/**
* Parcelable
*/
public static final Parcelable.Creator<WorkFlowBean> CREATOR = new Creator<WorkFlowBean>()
{

@Override
public WorkFlowBean createFromParcel(Parcel source)
{
WorkFlowBean workFlowBean = new WorkFlowBean();
// workFlowBean.ecsSDK = (EcsSDKImpl)source.readSerializable();
workFlowBean.ecsSDK = EcsSDKImpl.getInstance();
return workFlowBean;
}

@Override
public WorkFlowBean[] newArray(int size)
{
return new WorkFlowBean[size];
}
};

private EcsSDKImpl ecsSDK;

@Override
public int describeContents()
{
return 0;
}

public EcsSDKImpl getEcsSDK()
{
return ecsSDK;
}

@Override
public void writeToParcel(Parcel dest, int flags)
{
// dest.writeSerializable(EcsSDKImpl.getInstance());
}

如果想实现对象的传递的时候,必须声明一个新的aidl文件和javaBean的类名一致的
WorkFlowBean.aidl 里面书写 parcelable WorkFlowBean;
实现一个service
public class WorkFlowService extends Service
{

private class WorkFlowServiceImpl extends IWorkFlowPlugin.Stub
{
@Override
public WorkFlowBean getWorkFlowBean()
throws RemoteException
{
return WorkFlowBean.CREATOR.createFromParcel(null);
}
}

@Override
public IBinder onBind(Intent intent)
{
return new WorkFlowServiceImpl();
}

}

在其它的进程中实现一个ServiceConnection的连接类
private class MyServiceConnection implements ServiceConnection
{

@Override
public void onServiceConnected(ComponentName name, IBinder service)
{
workFlowPlugin = IWorkFlowPlugin.Stub.asInterface(service);
}

@Override
public void onServiceDisconnected(ComponentName name)
{

}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值