參考文章:https://blog.csdn.net/zhaoshiqing7/article/details/8036663
假設位于不同進程的某Activity要和某Service進行跨進程通信,步驟如下:
1、在Service和Activity中各new一個Messeger對象。

Service的信使

Client的信使
2、在Activity中在某處方法中,調用bindService方法將Activity和Service進行綁定。

注意此處的Connection對象
3、Service在接到綁定通知時,在回調中獲取Service信使的Binder對象,并通過mConnection連接返回給客戶端,客戶端獲取到onServiceConnected回調方法中的IBinder對象service,并通過該參數實例化“還原”出來服務端的Service信使,然后就可以使用它對服務端進行發(fā)消息。


客戶端向服務端發(fā)送“你好!”
4、如果服務端在收到消息后想要回信,那么就如上圖所示,將客戶端的Messenger信使賦予Message中的參數replyTo。我們在服務端收到消息后的回調中可以獲取到它。

服務端收到消息,并獲取到客戶端的信使
5、如上述代碼,服務端獲取到客戶端的信使并用它回信,客戶端也會在信使持有的Handler引用中收到消息。

客戶端收到服務端回信