1、Messenger類的說(shuō)明
Messenger類來(lái)擴(kuò)充IBinder接口機(jī)制,讓其能跨進(jìn)程地將Message對(duì)象傳遞到另一個(gè)進(jìn)程里,給其主線程(又稱UI線程)。
由于Message類實(shí)現(xiàn)(Implement)了Parcelable接口,所以Messenger類可以透過(guò)IBinder接口而將Message對(duì)象傳送到另一個(gè)進(jìn)程里的MessengerImpl類。然后,透過(guò)Handler而將Message對(duì)象丟入U(xiǎn)I線程的MQ里,讓UI線程來(lái)處理之。由于是同步(依序)處理信息,所以myService 類的開(kāi)發(fā)者,不必顧慮多線程沖突的安全議題,減輕開(kāi)發(fā)者的負(fù)擔(dān)。

2、Messenger單項(xiàng)傳遞數(shù)據(jù)
Messgener的兩個(gè)構(gòu)造方法:
public Messenger(Handler target) {mTarget = target.getIMessenger(); }//service端使用
public Messenger(IBinder target) {mTarget = IMessenger.Stub.asInterface(target);}//client端使用


3、Messener雙向傳遞數(shù)據(jù)



4、Messenger和AIDL區(qū)別
a、Messenger在服務(wù)端處理信息是通過(guò)Handler丟到主線程的MQ當(dāng)中,因此是單線程的串行處理,不支持多線程在service端處理傳遞過(guò)來(lái)的數(shù)據(jù),
b、Messenger只能用來(lái)傳遞數(shù)據(jù),調(diào)用service端的方法需要AIDL

