Android中的多进程通信怎么利用继承粘合剂类实现?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
<强>服务端代码,BinderService。java: 强>
首先继承粘合剂类,实现onTransact()供客户端调用,同样通过onBind()返回活页夹实例:
private static final java.lang.String DESCRIPTOR =,“org.ninetripods.mq.multiprocess_sever.IAidlCallBack"; private static  final int KEY_FLAG =, 0 x110; private class  MyBinder extends Binder  { ,,,/* * ,,,,*,@param code 唯一标识,客户端传递标识执行服务端代码 ,,,,*,@param data 客户端传递过来的参数 ,,,,*,@param reply 服务器返回回去的值 ,,,,*,@param flags 是否有返回值,0:有,1:没有 ,,,,* @return ,,,,*,@throws RemoteException 异常 ,,,*/,,@Override ,,,protected boolean onTransact (int 代码,Parcel 数据,Parcel 回答,,int 旗帜),throws RemoteException { ,,,,,switch (代码),{ ,,,,,,,case KEY_FLAG: ,,,,,,,,,//标识服务器名称 ,,,,,,,,,data.enforceInterface(描述符); ,,,,,,,,,Apple Apple =, new 苹果(“红星苹果,,,15 f, getString (R.string.response_binder_info)); ,,,,,,,,,reply.writeNoException (); ,,,,,,,,,reply.writeInt (1); ,,,,,,,,,apple.writeToParcel(回答,,android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE); ,,,,,,,,,return 真实; ,,,,,} ,,,,,return super.onTransact(数据代码,,,,回答,,标志); ,,,} ,,} @Override才能 public 才能;IBinder  onBind (Intent 意图),{ ,,,return new MyBinder (); 以前,,}>在AndroidManifest。xml中声明一下:
, & lt;服务 android: name=安拍?BinderService" android:才能启用=皌rue" android:才能导出=皌rue"比; & lt;才能intent-filter> ,,,& lt; action android: name=癮ndroid.mq.binder.service",/比; ,,,& lt; category android: name=癮ndroid.intent.category.DEFAULT",/比; & lt;才能/intent-filter> & lt;/service><强>客户端代码:BinderActivity。java: 强>
首先编写ServiceConnection类来获得粘合剂实例,来发送和接收数据:
private ServiceConnection binderConnection =, new ServiceConnection (), { ,,@Override ,,,public void onServiceConnected(名称、ComponentName IBinder 服务),{ ,,,,,isBound =,真的; ,,,,,mService =,服务; ,,,,,if (mService !=, null), { ,,,,,,,//声明两个包裹类型数据(_data和_reply),一个用于传输数据,一个用于接收数据 ,,,,,,,android.os.Parcel _data =, android.os.Parcel.obtain (); ,,,,,,,android.os.Parcel _reply =, android.os.Parcel.obtain (); ,,,,,,,Apple 苹果; ,,,,,,,try { ,,,,,,,,,//与服务器端的enforceInterface(描述符)对应 ,,,,,,,,,_data.writeInterfaceToken(描述符); ,,,,,,,,,//调用服务端的交易()传输数据 ,,,,,,,,,mService.transact (KEY_FLAG, _data,, _reply,, 0); ,,,,,,,,,_reply.readException (); ,,,,,,,,,if (0, !=, _reply.readInt ()), { ,,,,,,,,,,,//接收服务端响应数据 ,,,,,,,,,,,apple =, Apple.CREATOR.createFromParcel (_reply); ,,,,,,,,,},{else ,,,,,,,,,,,apple =,空; null null null null null null null null null null null null null null null null null null null null null安卓系统中的多进程通信怎么利用继承粘合剂类实现