Android系統(tǒng)中進(jìn)程間通信有以下幾種方式:
1、Bundle
2、文件共享
3、AIDL
4、Messenger
5、ContentPrivider
6、Socket
名稱(chēng) | 優(yōu)點(diǎn) | 缺點(diǎn) | 適用場(chǎng)景 |
---|---|---|---|
Bundel | 簡(jiǎn)單易用 | 只能傳輸Bundle支持的數(shù)據(jù)類(lèi)型 | 四大組件間的進(jìn)程通信 |
文件共享 | 簡(jiǎn)單易用 | 不適合高并發(fā)場(chǎng)景,并且無(wú)法做到進(jìn)程間的即時(shí)通信 | 無(wú)并發(fā)訪問(wèn)情形,交換簡(jiǎn)單的數(shù)據(jù)實(shí)時(shí)性不高的場(chǎng)景 |
AIDL | 功能強(qiáng)大,支持一對(duì)多并發(fā)通信,支持實(shí)時(shí)通信 | 使用復(fù)雜,需要處理好線程同步 | 一對(duì)多通信且有PRC需求 |
Messenger | 功能強(qiáng)大,支持一對(duì)多串行通信,支持實(shí)時(shí)通信 | 不能很好處理高并發(fā)情形,不支持PRC,數(shù)據(jù)通過(guò)Message進(jìn)行傳輸,因?yàn)橹荒軅鬏擝undle支持的數(shù)據(jù)類(lèi)型 | 低并發(fā)的一對(duì)多即時(shí)通信,無(wú)PRC需求,或著無(wú)須要返回結(jié)果的PRC需求 |
ContentPrivider | 在數(shù)據(jù)源訪問(wèn)方面功能強(qiáng)大,支持一對(duì)多并發(fā)數(shù)據(jù)共享,可通過(guò)Call方法擴(kuò)展其他操作 | 可以理解為受約束的AIDL,主要提供數(shù)據(jù)源的CRUD操作 | 一對(duì)多的進(jìn)程間的數(shù)據(jù)共享 |
Socket | 功能強(qiáng)大,可以通過(guò)網(wǎng)絡(luò)傳輸字節(jié)流,支持一對(duì)多并發(fā)實(shí)時(shí)通信 | 實(shí)現(xiàn)細(xì)節(jié)稍微有點(diǎn)繁瑣,不支持直接RPC | 網(wǎng)絡(luò)數(shù)據(jù)交換 |