欢迎来到代码驿站!

Android代码

当前位置:首页 > 移动开发 > Android代码

Android AIDL实现跨进程通信的示例代码

时间:2021-11-05 09:22:48|栏目:Android代码|点击:

AIDL是Android接口定义语言,它可以用于让某个Service与多个应用程序组件之间进行跨进程通信,从而可以实现多个应用程序共享同一个Service的功能。

实现步骤

例:用 A程序去访问 B程序的MyService.java服务

  1. 在B中建立AIDL文件MyAidlService.AIDL,在AIDL文件里写我们的接口方法
  2. 在MyService中写AIDL文件定义的方法的具体服务逻辑
  3. 在B的manifest文件中,为Service添加action “com.xyb.servicetest.MyAidlService” 用于A静态来访问Service(这里是因为,如果用动态Intent (this, MyService.class), 在A中没有MyService这个类)
  4. 把B的AIDL文件夹拷贝到A中,一定要注意包的路径依然为B中的路径
  5. 在A中利用静态Intent来启动B的服务MyService

对应步骤详细代码:

MyAidlService.AIDL

interface MyAidlService { 
  int add(int a, int b); 
}

MyService.Java

public class MyService extends Service{ 
 
  MyAidlService.Stub mBinder = new MyAidlService.Stub() { 
    @Override 
    public int add(int a, int b) throws RemoteException { 
      return a + b; 
    } 
  }; 
 
  @Override 
  public IBinder onBind(Intent intent) { 
    return mBinder; 
  } 
 
  @Override 
  public void onCreate() { 
    super.onCreate(); 
  } 
 
  @Override 
  public void onDestroy() { 
    super.onDestroy(); 
  } 
 
  @Override 
  public int onStartCommand(Intent intent, int flags, int startId) { 
    return super.onStartCommand(intent, flags, startId); 
  } 
 
 
}

3.添加action

<service android:name=".MyService"> 
      <intent-filter> 
        <action android:name="com.xyb.servicetest.MyAidlService"/> 
      </intent-filter> 
    </service>

4.拷贝AIDL文件夹

5.A访问B的服务

Intent intent = new Intent("com.xyb.servicetest.MyAidlService"); 
        bindService(intent, connection, BIND_AUTO_CREATE);
private MyAidlService aidlService;
private ServiceConnection connection = new ServiceConnection() { 
  @Override 
  public void onServiceConnected(ComponentName name, IBinder service) { 
    Log.d("onServiceConnected", "onServiceConnected"); 
    aidlService = (MyAidlService) MyAidlService.Stub.asInterface(service); 
    try { 
      int sum = aidlService.add(10, 50);//对10和50相加 
      Log.d("onServiceConnected", sum + ""); 
    } catch (RemoteException e) { 
      e.printStackTrace(); 
    } 
  } 
 
 
  @Override 
  public void onServiceDisconnected(ComponentName name) { 
 
 
  } 
};

上一篇:Android编程自定义对话框(Dialog)位置及大小的方法

栏    目:Android代码

下一篇:Android仿IOS上拉下拉弹性效果的实例代码

本文标题:Android AIDL实现跨进程通信的示例代码

本文地址:http://www.codeinn.net/misctech/182484.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有