四大組建的三大組建(Activity疾瓮、Service这嚣、Receiver)都是支持在Intent中傳遞Bundle數(shù)據(jù)辙售,由于Bundle實(shí)現(xiàn)了Parcelable接口菲嘴,所以可以方便地在不同的進(jìn)程間傳輸。基于這一點(diǎn)蚌吸,當(dāng)我們在一個(gè)進(jìn)程中啟動了另一個(gè)進(jìn)程的Activity、Service砌庄、Receiver,我們就可以在Bundle中附加我們需要傳輸給遠(yuǎn)程進(jìn)程的信息并通過Intent發(fā)送出去羹唠。當(dāng)然,我們傳輸?shù)臄?shù)據(jù)必須能夠被序列化娄昆,比如基本類型佩微、實(shí)現(xiàn)了Parcelable接口對象、實(shí)現(xiàn)了Serializable接口對象以及一些Android支持的特殊對象萌焰。
特殊的使用場景
比如A進(jìn)程在進(jìn)行一個(gè)計(jì)算哺眯,計(jì)算完成后它要啟動B進(jìn)程的一個(gè)組件并把計(jì)算接口傳遞給B進(jìn)程,很遺憾的是這個(gè)計(jì)算結(jié)構(gòu)不支持放入Bundle中扒俯,因此無法通過Intent來傳輸奶卓,這個(gè)時(shí)候應(yīng)該怎么辦?
我們可以通過Intent來啟動進(jìn)程B的一個(gè)Service(比如IntentService)組建,讓Service在后臺進(jìn)行計(jì)算撼玄,計(jì)算完畢后再啟動B進(jìn)程中真正要啟動的目標(biāo)組建夺姑,由于Service也運(yùn)行在B進(jìn)程中,所以目標(biāo)組建可以直接獲取計(jì)算結(jié)果掌猛。