最近项目中有用到Binder,学习之后写点心得,不好的地方还请大家指正。
Android中跨进程通信有多种方式,比如BroadcastReceiver,message,当然还有AIDL。其中BroadcastReceiver的特点是占用系统内存,message同时通信进程少,是请求队列,如果项目中要进行多进程之间的通信,这时,AIDL就派上用场了。好了,话不多说,直接上代码吧。
1.创建AIDL文件
鼠标放在main文件夹上,右击 --> new --> AIDL --> AIDL File
2.在main文件夹下会生成aidl文件,生成自己的.aidl文件,这里,可以编写自己要实现的方法
注意:(1),如果有多个.aidl文件,切记要导入所依赖的包名(这里坑了我好几天)
(2),可能是你的复制进来的Aidl文件的包名没有修改成当前的包名
3.make一下工程,会在如图路径下生成对应的 .Java文件。
4.创建服务端
继承自service,实现未实现的方法,实现onBind方法。
5.创建客户端,
(1),调用ServiceConnection,在onServiceConnected方法中,调用.stub方法
(2), 尝试与服务端连接,在按钮的监听事件中,调用服务端重写的方法即可,
总结下个人在项目中遇到的坑:1,生成Java文件时导包错误