android使用Messenger綁定Service的多種實現(xiàn)方法
如果你需要在不同進程間通信,你可以在Service中使用Messenger來實現(xiàn)進程中通信。
如果使用這種方式,Service中需要定義一個Handler對象(負責對客戶端發(fā)送過來的Message進行響應)。
Messenger可以共享給client一個IBinder對象,client通過這個IBinder對象向Service發(fā)送Message,而前面提到的Handler對象是這一切的基礎。
注:使用這種方式進行通信是不支持多線程的。
那就讓我們來看看使用這種方式進行通信吧!
注:Service在聲明時必須對外開放,即android:exported="true",且本文是通過Intent啟動的Service,所以在聲明時該Service可以接收特定的Action。
1、在Service中創(chuàng)建一個Handler對象,來處理從client發(fā)過來的Message
2、根據(jù)創(chuàng)建的Handler對象創(chuàng)建一個Messenger對象
3、使用Messenger的getBinder方法得到一個IBinder對象,并在Service的onBind方法中將其反出去
4、client在onServiceConnected中根據(jù)IBinder參數(shù)創(chuàng)建一個Messenger對象(可參考Messenger的構造函數(shù))
5、client可以使用上一步得到的Messenger對象來給Service發(fā)送Message了
經(jīng)過上面的五部我們就能讓client與Service進行通信。client使用Messenger對象給Service發(fā)送Message后,Service中的Handler將會對消息作出響應。
上面實現(xiàn)的僅僅是單向通信,即client給Service發(fā)送消息,如果我需要Service給client發(fā)送消息又該怎樣做呢?
其實,這也是很容易實現(xiàn)的,下面就讓我們接著上面的步驟來實現(xiàn)雙向通信吧~
6、在client中創(chuàng)建一個Handler對象,用于處理Service發(fā)過來的消息
7、根據(jù)client中的Handler對象創(chuàng)建一個client自己的Messenger對象
8、我們在第5步的時候獲得了Service的Messenger對象,并通過它來給Service發(fā)送消息。這時候,我們將client的Messenger對象賦給待發(fā)送的Message對象的replyTo字段
9、在Service的Handler處理Message時將client的Messenger解析出來,并使用client的Messenger對象給client發(fā)送消息
這樣我們就實現(xiàn)了client和Service的雙向通信。client和Service都有自己的Handler和Messenger對象,使得對方可以給自己發(fā)送消息,值得注意的是client的Messenger是通過Message的replyTo傳遞給Service的。
相關文章
Android Studio 升級到3.0 提示 java.lang.NoClassDefFoundError的解決方法
這篇文章主要介紹了Android Studio 升級到3.0 提示 java.lang.NoClassDefFoundError的解決方法,需要的朋友可以參考下2017-12-12android studio實現(xiàn)簡單考試應用程序?qū)嵗a詳解
這篇文章主要介紹了android studio實現(xiàn)簡單考試應用程序,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03自定義ListView實現(xiàn)拖拽ListItem項交換位置(附源碼)
本文要實現(xiàn)的是拖拽ListView的Item項,在布局方面還是用基于布局泵LayoutInflater來從不同的Layout模板拿到不同的布局然后將view返回,感興趣的朋友可以了解下哈2013-06-06Android實現(xiàn)打開各種文件的intent方法小結
這篇文章主要介紹了Android實現(xiàn)打開各種文件的intent方法,結合實例形式總結分析了Android針對HTML、圖片文件、pdf文件、文本文件、音頻文件、視頻文件等的intent打開方法,需要的朋友可以參考下2016-08-08Android中創(chuàng)建快捷方式及刪除快捷方式實現(xiàn)方法
這篇文章主要介紹了Android中創(chuàng)建快捷方式及刪除快捷方式實現(xiàn)方法,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下2015-06-06Android Studio Intent隱式啟動,發(fā)短信,撥號,打電話,訪問網(wǎng)頁等實例代碼
這篇文章主要介紹了Android Studio Intent隱式啟動,發(fā)短信,撥號,打電話,訪問網(wǎng)頁等實例代碼的相關資料,需要的朋友可以參考下2016-12-12