我們使用Handler都是在一個(gè)進(jìn)程中使用的,,如何跨進(jìn)程使用Handler,? 其實(shí)這個(gè)問題不難解決,自己動(dòng)手對(duì)binder進(jìn)行一些封裝就可以簡單實(shí)現(xiàn),。但是當(dāng)你看系統(tǒng)源碼,,就會(huì)發(fā)現(xiàn),其實(shí)這些android都已經(jīng)為我們做好了,。 使用android系統(tǒng)的android.os.Messenger可以很方便的跨進(jìn)程使用Handler,。下面是示例程序。 首先是服務(wù)端,。
然后是客戶端
客戶端綁定服務(wù)端,獲取遠(yuǎn)程Messenger的binder對(duì)象,。調(diào)用Messenger的send函數(shù),,就可以吧Message發(fā)送至服務(wù)端的Handler。 同時(shí),,如果需要服務(wù)端回調(diào)客戶端(往客戶端的Handler發(fā)消息),,則可以在send的Message中設(shè)置replyTo,服務(wù)端就可以往客戶端發(fā)送消息了,。 下面我們看下Messenger的源碼,,還是很簡單的。 構(gòu)造函數(shù) Handler.getIMessenger()返回的是一個(gè)IMessenger的binder對(duì)象,,它的send方法將會(huì)調(diào)用Handler的sendMessage方法,。 |
|