1.為什么使用Binder
Android使用的Linux內(nèi)核擁有著非常多的跨進(jìn)程通信機(jī)制(管道荣德、Socket等)损谦,Binder有兩大優(yōu)點(diǎn)
1)性能 (Binder相對(duì)于傳統(tǒng)方式更加高效蛙吏。Binder數(shù)據(jù)拷貝只需要一次取刃,而管道徒扶、消息隊(duì)列绎晃、Socket都需要2次赁豆,內(nèi)存共享方式不需要內(nèi)存拷貝,但是實(shí)現(xiàn)難度高艺晴,較為復(fù)雜昼钻。)
2)安全性(支持通信雙方進(jìn)行身份校驗(yàn))
2.Binder通信模型
Binder的C/S架構(gòu):在Android開機(jī)啟動(dòng)過(guò)程中,Android會(huì)初始化系統(tǒng)的各種Service封寞,并將這些Service向ServiceManager注冊(cè)(即讓ServiceManager管理)然评。客戶端想要得到具體的Service直接向ServiceManager要即可狈究⊥胩剩客戶端首先向ServiceManager查詢得到具體的Service引用,然后通過(guò)這個(gè)引用向具體的服務(wù)端發(fā)送請(qǐng)求抖锥,服務(wù)端執(zhí)行完成后就返回亿眠。
3.什么是Binder
1)通常意義下,Binder指的是一種通信機(jī)制
2)對(duì)于Server進(jìn)程來(lái)說(shuō)宁改,Binder指的是Binder本地對(duì)象,對(duì)于Client來(lái)說(shuō)魂莫,Binder指的是Binder代理對(duì)象还蹲。
3)對(duì)于傳輸過(guò)程而言,Binder是可以進(jìn)行跨進(jìn)程傳遞的對(duì)象耙考。
實(shí)例:AIDL