使用Bundle进行IPC

2016-07-26  本文已影响32人  jacky123

四大组建的三大组建(Activity、Service、Receiver)都是支持在Intent中传递Bundle数据,由于Bundle实现了Parcelable接口,所以可以方便地在不同的进程间传输。基于这一点,当我们在一个进程中启动了另一个进程的Activity、Service、Receiver,我们就可以在Bundle中附加我们需要传输给远程进程的信息并通过Intent发送出去。当然,我们传输的数据必须能够被序列化,比如基本类型、实现了Parcelable接口对象、实现了Serializable接口对象以及一些Android支持的特殊对象。


特殊的使用场景

比如A进程在进行一个计算,计算完成后它要启动B进程的一个组件并把计算接口传递给B进程,很遗憾的是这个计算结构不支持放入Bundle中,因此无法通过Intent来传输,这个时候应该怎么办?

我们可以通过Intent来启动进程B的一个Service(比如IntentService)组建,让Service在后台进行计算,计算完毕后再启动B进程中真正要启动的目标组建,由于Service也运行在B进程中,所以目标组建可以直接获取计算结果。


上一篇下一篇

猜你喜欢

热点阅读