您的位置:首页 > 大数据 > 人工智能

AIDL随写

2016-02-24 22:02 423 查看
1.安卓5.0 之后,跨进程启动服务,只能用显示intent。但我们因为跨程序又获取不到那个服务的定义

new intent 后,给intent设component。指定包名,类名。再startService,跨进程启动服务

2.跨进程绑定服务 aidl机制用于多个进程之间进行通信。

app中写一aidl文件。重写onbind方法的返回值

anotherapp。一按钮点击做 bindservice方法。一unbindservice

重写服务链接,跟服务断开的代码

3.跨进程服务通信

添加接口在aidl中进行。写一setdata方法

把app里的aidl文件拷贝到anotherapp里。注意文件夹的包名要一致。重建

一个按钮同步该变另一个服务里的正在输出的字符串。点击时binder(此为服务链接时传入的,不能强制转换类型,用.asInterface())不为null。写setdata传其他字符串

什么是 AIDL 以及如何使用

①aidl 是 Android interface definition Language 的英文缩写,意思 Android 接口定义语言。

②使用 aidl 可以帮助我们发布以及调用远程服务,实现跨进程通信。

③将服务的 aidl 放到对应的 src 目录,工程的 gen 目录会生成相应的接口类

我们通过 bindService (Intent,ServiceConnect ,int)方法绑定远程服务,在 bindService 中有一个

ServiceConnec 接口,我们需要覆写该类的 onServiceConnected(ComponentName,IBinder)方法,这个方法的第

二个参数 IBinder 对象其实就是已经在 aidl 中定义的接口, 因此我们可以将 IBinder 对象强制转换为 aidl 中的接口类。

我们通过 IBinder 获取到的对象(也就是 aidl 文件生成的接口)其实是系统产生的代理对象,该代理对象既可以

跟我们的进程通信,又可以跟远程进程通信,作为一个中间的角色实现了进程间通信。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: