星空网 > 软件开发 > 操作系统

android 浅谈Aidl 通讯机制

服务端:

首先是编写一个aidl文件,注意AIDL只支持方法,不能定义静态成员,并且方法也不能有类似public等的修饰符;AIDL运行方法有任何类型的参数和返回值,在java的类型中,以下的类型使用时不需要导入包(import),基本数据类型、String、Map、List.当然为了避免出错,建议只要使用了,就导入包。

然后在服务端启动一个服务并注册,编写一个任意类实现AIDL文件生成的JAVA接口Stub!

最后在service里面实例化你的任意类并且在onBind(Intent a)方法上面返回你任意类的对象!

客户端

首先把你在服务端的aidl文件完整的复制过来一份,并且保证包名一样

然后调用bindservice方法绑定你在服务端创建的方法mContext.bindService(intent, mServiceConnection, 0);

其中mServiceConnection是重点:

private ServiceConnection mServiceConnection = new ServiceConnection() {

@Override
public void onServiceConnected(ComponentName name, IBinder service) {//连接上服务器时调用
mService = IRemoteService.Stub.asInterface(service);

}

@Override
public void onServiceDisconnected(ComponentName name) {//没连上调用
mService = null;
}
};

其中mService就是服务端的aidl对象,我们可以通过它来给服务端的方法赋值

其中的传的Intent要注意必须提供一个intent-filter来匹配请求是否合法,所以我们在客户端访问服务的时候,还必须传递包含了匹配action的Intent哦。

 




原标题:android 浅谈Aidl 通讯机制

关键词:Android

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

欧洲fba双清:https://www.goluckyvip.com/tag/39175.html
欧洲fba铁路:https://www.goluckyvip.com/tag/39176.html
欧洲fba铁运:https://www.goluckyvip.com/tag/39177.html
欧洲fba头程:https://www.goluckyvip.com/tag/39178.html
欧洲fba头程运输:https://www.goluckyvip.com/tag/39179.html
Registry :https://www.goluckyvip.com/tag/3918.html
instagram竞品“TikTok Notes”在加拿大和澳大利亚上线:https://www.kjdsnews.com/a/1842224.html
instagram竞品“TikTok Notes”在加拿大和澳大利亚上线:https://www.goluckyvip.com/news/220211.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流