Android中的ibinder是什么?这篇文章讲透了!

吉云

今天来捣鼓一下IBinder,这玩意儿听起来挺玄乎,就是个进程间通信的机制。咱平时用的App,很多功能都得靠它来实现。

我也不太清楚这IBinder到底是干啥的。查些资料,大概意思是说,Android系统里,每个App都像在一个独立的房间里,互相之间不能直接串门。但有时候,一个App需要另一个App帮忙,比如一个App想用另一个App提供的服务,这时候就得靠IBinder。

为搞明白这玩意儿,我决定动手试试。我得先解一下基本概念。资料上说,IBinder是一个接口,描述怎么和远程对象交互。但咱不能直接用这个接口,得通过继承Binder来实现。

Android中的ibinder是什么?这篇文章讲透了!

实践过程

我先创建两个App,一个作为服务端,提供服务;另一个作为客户端,使用服务。在服务端App里,我创建一个Service,并在里面定义一个Binder的子类。

在这个Binder子类里,我写一个方法,这个方法就是用来给客户端调用的。

  • 我在*文件里把这个Service配置一下,让它能被其他App找到。
  • 然后,在客户端App里,我通过bindService方法,连接到服务端的Service。
  • Android中的ibinder是什么?这篇文章讲透了!

  • 连接成功后,我拿到一个IBinder对象,这个对象就是服务端那个Binder子类的实例。
  • 我通过这个IBinder对象,调用服务端定义的方法,成功实现进程间通信。

遇到的问题

实践过程中也遇到一些问题。比如,一开始我对Binder的理解不够深入,不知道怎么定义自己的Binder子类。后来我仔细看看Binder的源码,又查些资料,才搞明白。

还有,在配置Service的时候,我也遇到一些麻烦。我没配置导致客户端App找不到服务端的Service。后来我反复检查*文件,才发现是配置写错。

Android中的ibinder是什么?这篇文章讲透了!

总结

这回实践让我对IBinder有更深入的理解。虽然过程有点曲折,但最终还是成功实现进程间通信。以后再遇到类似的需求,我就知道该怎么做。这回的分享就到这里,希望能给大伙儿带来一些帮助。

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]