全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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  # 跨进程通信 


相关文章: 建站之星与建站宝盒如何选择最佳方案?  建站之星如何快速解决建站难题?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  青岛网站建设如何选择本地服务器?  微课制作网站有哪些,微课网怎么进?  如何快速搭建高效香港服务器网站?  如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?  红河网站制作公司,红河事业单位身份证如何上传?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  建站主机选择指南:服务器配置与SEO优化实战技巧  建站DNS解析失败?如何正确配置域名服务器?  建站之星安装后如何配置SEO及设计样式?  linux top下的 minerd 木马清除方法  陕西网站制作公司有哪些,陕西凌云电器有限公司官网?  制作企业网站建设方案,怎样建设一个公司网站?  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  如何高效完成独享虚拟主机建站?  建站主机空间推荐 高性价比配置与快速部署方案解析  阿里云网站制作公司,阿里云快速搭建网站好用吗?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  如何挑选高效建站主机与优质域名?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  制作网站怎么制作,*游戏网站怎么搭建?  如何在新浪SAE免费搭建个人博客?  如何在IIS7上新建站点并设置安全权限?  高端网站建设与定制开发一站式解决方案 中企动力  建站之星后台管理系统如何操作?  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  如何挑选优质建站一级代理提升网站排名?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  Android使用GridView实现日历的简单功能  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  SQL查询语句优化的实用方法总结  内部网站制作流程,如何建立公司内部网站?  建站之星如何优化SEO以实现高效排名?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  购物网站制作公司有哪些,哪个购物网站比较好?  建站之星图片链接生成指南:自助建站与智能设计教程  在线教育网站制作平台,山西立德教育官网?  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  学校免费自助建站系统:智能生成+拖拽设计+多端适配  建站之星24小时客服电话如何获取?  制作表格网站有哪些,线上表格怎么弄?  建站主机服务器选型指南与性能优化方案解析  建站之家VIP精选网站模板与SEO优化教程整合指南  python的本地网站制作,如何创建本地站点?  建站之星×万网:智能建站系统+自助建站平台一键生成 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。