前邊三篇已經(jīng)講解了IPC所涉及的內(nèi)容,現(xiàn)在切入正題了......
Binder機(jī)制
androidIPC機(jī)制就是Binder機(jī)制,是提供遠(yuǎn)程過程調(diào)用(RPC)功能,在Binder機(jī)制中,由系統(tǒng)組件組成,分別是Client、Server、Service Manager和Binder驅(qū)動(dòng)程序,其中Client、Server和Service Manager運(yùn)行在用戶空間,Binder驅(qū)動(dòng)程序運(yùn)行內(nèi)核空間。Binder就是一種把這四個(gè)組件粘合在一起的粘結(jié)劑了,其中,核心組件便是Binder驅(qū)動(dòng)程序了,Service Manager是一個(gè)守護(hù)進(jìn)程,用來管理Server,并向Client提供查詢Server接口的能力,是輔助管理的功能,Client和Server正是在Binder驅(qū)動(dòng)和ServiceManager提供的基礎(chǔ)設(shè)施上,進(jìn)行Client-Server之間的通信;
IPC通信方式
1.Bundle:一般用于四大組件間的進(jìn)程間通信,簡(jiǎn)單易用
2.文件共享:通過IO方式把數(shù)據(jù)寫到文件里進(jìn)行通信,需要注意序列化
3.AIDL:AIDL是IPC的一個(gè)輕量級(jí)實(shí)現(xiàn)
4.ContentProvider:ContentProvider相當(dāng)于為數(shù)據(jù)存儲(chǔ)和獲取提供了一個(gè)統(tǒng)一的接口
5.Messenger: Messenger本質(zhì)也是AIDL,只是進(jìn)行了封裝,開發(fā)的時(shí)候不用再寫.aidl文件,所以相對(duì)于AIDL較于簡(jiǎn)單。
6.Socket:一般用來網(wǎng)絡(luò)數(shù)據(jù)的交換
各方式對(duì)比及使用場(chǎng)景
