安卓系统中的多进程通信怎么利用继承粘合剂类实现

  

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

安卓系统中的多进程通信怎么利用继承粘合剂类实现