u014248939
小李Sunny
2016-04-18 01:28

android AIDL使用的问题

  • 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条回答