2 u014248939 u014248939 于 2016.04.18 09:28 提问

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个回答

CSDNXIAOC
CSDNXIAOC   2016.04.18 09:32

             

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

u014248939
u014248939 我不知道是不是配置有问题,在客户端启动服务器端Service时的时候总是不成功
一年多之前 回复
javalaiba
javalaiba   2016.04.18 10:05

你的mainifest.xml文件怎么写的

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!