使用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进程中,所以目标组建可以直接获取计算结果。