android中跨进程之间的异步回调

来源:互联网 发布:c语言产生随机数代码 编辑:程序博客网 时间:2024/06/05 19:58

在android中,我们会经常跨进程通信,若要返回结果,则使用aidl中的bindServcie(),但是在结果返回过程中,是异步的过程,即需要一个回调的Listener,将结果回调到发起者。

假如A进程和B进程通信,A执行bindServcie()操作来绑定B,绑定之后,获取B本地代理Bproxy,A调用Bproxy来寻求B中的操作,并且要求B将结果返回过来,这时候,就需要A这边注册一次Listener,该Listener也是一个aidl,A携带该Listener给B,B经过一番操作之后,将结果通过Listener返回给A,这时候,对应A来说就是一个异步操作,即请求操作和结果返回是不同时候的。


对于请求操作和返回结果的跨进程异步操作,就需要A里面做一个后台线程操作。A在内部创建一个HanderThread,绑定一个内部Handler对象,在Listener结果返回时候,通过内部的Handler发送sendMessage()给HanderThread,让该线程执行处理操作。


这样就将异步操作结果反馈给内部后台的Thead执行,而不是在UI线程中执行。


这样的案例android很多,比如对数据监听的ContentObserver 中的onChange()方法。

0 0
原创粉丝点击