Android跨进程bindService与callback
Service的存在主要是为了让Application来bindService,然后通过binder来调用Service中的服务函数,然而在某些情况下,Service也需要回调Application,让其完成某些事情。
举一个简单的例子,我们有一个下载服务(Service),有一个客户端(Client),通常情况下的流程是这样的:
在服务端完成下载之后,是需要通过onDownloadComplete这个回调函数,让客户端在下载完成,做一些其他的事情,例如播放下载文件之类的。
因为是跨进程的通信,所以我们要实现两个application,一个Application实现Service,另一个Application实现Client。重点关注跨进程的Service与Client之间的交互。
我们的交互是这样的:
Client实现一个回调函数集合:IAidlCallback,里面有1个函数:
1. onDownloadCompleted();
Service实现一个服务函数集合:IAidlService, 里面有3个函数:
1. registerCallback()
2. download();
3. unregisterCallback()