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