iOS的組件間通訊方案核心問題是解決:注冊(cè)服務(wù)、發(fā)現(xiàn)服務(wù)、調(diào)用服務(wù)的過程,Android由于每個(gè)Activity在安裝時(shí)就被注冊(cè)到系統(tǒng)中且可以跨進(jìn)程可見、跨進(jìn)程調(diào)用,因此無需特殊實(shí)現(xiàn),使用隱式Intent即可。
針對(duì)iOS中的六種場(chǎng)景,Android對(duì)應(yīng)的實(shí)現(xiàn):
** 場(chǎng)景1:A組件內(nèi)部Activity互相調(diào)用:**
使用顯示Intent,eg:
startActivity(new Intent(this, AlbumActivity.class))
** 場(chǎng)景2:A組件的Activity1調(diào)用B組件的Activity2**
使用隱式Intent,eg:
startActivity(new Intent(Intent.ACTION_VIEW, "eg_album"))
** 場(chǎng)景3:外部應(yīng)用通過URL調(diào)用B組件的Activity2**
同場(chǎng)景2
** 場(chǎng)景4:A組件里的H5通過URL調(diào)用B組件的Activity2**
同場(chǎng)景2
** 場(chǎng)景5:A組件里的H5通過URL調(diào)用A組件里的Activity1**
同場(chǎng)景2
** 場(chǎng)景6:A組件的VC1調(diào)用B組件的VC2,并需要拿到VC2的業(yè)務(wù)處理結(jié)果**
同場(chǎng)景2,調(diào)用方法改為startActivityForResult
注意:
由于Android Activity注冊(cè)服務(wù)是跨進(jìn)程可見且跨進(jìn)程可調(diào)用的,因此需要對(duì)訪問者身份及安全性做校驗(yàn)。