amtfnmamtf 2016-04-18 01:28 采纳率: 0%
浏览 1778

android AIDL使用的问题

AIDL的使用步骤是:
创建两个工程,一个为client,一个为server
server端在src目录下专门创建一个包用于放置创建的myInterface.aidl接口文件,定义用于通信的抽象方法,然后编译,在gen目录下生成myInterface.java文件,该文件会自动生成内部接口myInterface.Stub;再创建一个Service类,在类中创建myInterface.Stub对象,实现在接口中定义的用于通信的抽象方法;
再重写onBind方法,把Stub对象返回出去(Stub类是IBinder的子类,可以用于client端和server端的通信)
然后在AndroidManifest文件里配置Service类

然后把在server端定义的aidl接口文件复制到client端项目中(连包带文件一起复制,保持client端和server端aidl接口所在包路径一样),在client端的Activity中定义ServiceConnection类对象和server端接口myInterface对象,重写ServiceConnection对象的onServiceConnect,在该方法中获取来自server端的myInterface对象,
现在就可以调用myInterface中的方法(也就是client端调用server端的方法,也就完成了进程间通信)

上面的ServiceConnection要能获取到IBinder对象,还需要client用Intent完成与server端的Service类的绑定
我就卡在这一步了
不管是对server端Service指定Action来让client端启动,还是指定其它东西,就是无法再client端项目里启动server端项目里的Service
有谁知道怎么解决吗?
简而言之,就是如何在当前工程中调用远程Service

  • 写回答

2条回答

  • Robot-C 2016-04-18 01:32
    关注

                 

      上图为所建工程结构 因为android AIDL建立时需要包名相同 ,所以建议copy,注意运行时先运行一次service,不要犯低级错误哈 
      1:服务端和客户端都有的相同的aidl文件,自动生成文件就不贴了
    package com.pengxi......
    答案就在这里:android AIDL的使用
    ----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考