预览加载中,请您耐心等待几秒...
1/7
2/7
3/7
4/7
5/7
6/7
7/7

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

一、创建AIDL文件 ackagecn.com.android123; 引入声明 importcn.com.android123.IAtmService; //声明一个接口,这里演示的是银行ATM程序 interfaceIBankAccountService{ intgetAccountBalance();//返回整数,无参数 voidsetOwnerNames(inList<String>names);//不返回,包含一个传入List参数 BankAccountcreateAccount(inStringname,intstartingDeposit,inIAtmServiceatmService);//返回一个自定义类型 intgetCustomerList(inStringbranch,outString[]customerList);//返回整形,输入一个分支,输出一个客户列表 } 二、实现一个接口 //显示的提供一个导出接口,为客户端提供绑定。 publicclassRemoteServiceextendsService{ @Override publicIBinderonBind(Intentintent){ if(IRemoteService.class.getName().equals(intent.getAction())){ returnmBinder; } if(ISecondary.class.getName().equals(intent.getAction())){ returnmSecondaryBinder; } returnnull; } //第一个接口 privatefinalIRemoteService.StubmBinder=newIRemoteService.Stub(){ publicvoidregisterCallback(IRemoteServiceCallbackcb){ if(cb!=null)mCallbacks.register(cb); } publicvoidunregisterCallback(IRemoteServiceCallbackcb){ if(cb!=null)mCallbacks.unregister(cb); } }; //第二个接口 privatefinalISecondary.StubmSecondaryBinder=newISecondary.Stub(){ publicintgetPid(){ returnProcess.myPid(); } publicvoidbasicTypes(intanInt,longaLong,booleanaBoolean, floataFloat,doubleaDouble,StringaString){ } }; } 三、客户端交互 /** 通过Android.os提供的Parcelable类型来传递数据,通常我们使用Eclipse+ADT插件来完成,在Eclipse中在PackageExplorerview视图上单击鼠标右键,选择CreateAidlpreprocessfileforParcelableclasses(创建aidl预编译文件),最终我们创建一个名为android123.aidl文件 */ importandroid.os.Parcel; importandroid.os.Parcelable; publicfinalclassRectimplementsParcelable{ publicintleft; publicinttop; publicintright; publicintbottom; publicstaticfinalParcelable.Creator<Rect>CREATOR=newParcelable.Creator<Rect>(){ publicRectcreateFromParcel(Parcelin){ returnnewRect(in); } publicRect[]newArray(intsize){ returnnewRect[size]; } }; publicRect(){ } privateRect(Parcelin){ readFromParcel(in); } publicvoidwriteToParcel(Parcelout){//当前数据写入到Parcel中 out.writeInt(left); out.writeInt(top); out.writeInt(right); out.writeInt(bottom); } publicvoidreadFromParcel(Parcelin){//从Parce