今天来捣鼓一下IBinder,这玩意儿听起来挺玄乎,就是个进程间通信的机制。咱平时用的App,很多功能都得靠它来实现。
我也不太清楚这IBinder到底是干啥的。查些资料,大概意思是说,Android系统里,每个App都像在一个独立的房间里,互相之间不能直接串门。但有时候,一个App需要另一个App帮忙,比如一个App想用另一个App提供的服务,这时候就得靠IBinder。
为搞明白这玩意儿,我决定动手试试。我得先解一下基本概念。资料上说,IBinder是一个接口,描述怎么和远程对象交互。但咱不能直接用这个接口,得通过继承Binder来实现。
实践过程
我先创建两个App,一个作为服务端,提供服务;另一个作为客户端,使用服务。在服务端App里,我创建一个Service,并在里面定义一个Binder的子类。
在这个Binder子类里,我写一个方法,这个方法就是用来给客户端调用的。
- 我在*文件里把这个Service配置一下,让它能被其他App找到。
- 然后,在客户端App里,我通过bindService方法,连接到服务端的Service。
- 连接成功后,我拿到一个IBinder对象,这个对象就是服务端那个Binder子类的实例。
- 我通过这个IBinder对象,调用服务端定义的方法,成功实现进程间通信。
遇到的问题
实践过程中也遇到一些问题。比如,一开始我对Binder的理解不够深入,不知道怎么定义自己的Binder子类。后来我仔细看看Binder的源码,又查些资料,才搞明白。
还有,在配置Service的时候,我也遇到一些麻烦。我没配置导致客户端App找不到服务端的Service。后来我反复检查*文件,才发现是配置写错。
总结
这回实践让我对IBinder有更深入的理解。虽然过程有点曲折,但最终还是成功实现进程间通信。以后再遇到类似的需求,我就知道该怎么做。这回的分享就到这里,希望能给大伙儿带来一些帮助。
免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。