淺談Android Aidl 通訊機(jī)制
服務(wù)端:
首先是編寫一個(gè)aidl文件,注意AIDL只支持方法,不能定義靜態(tài)成員,并且方法也不能有類似public等的修飾符;AIDL運(yùn)行方法有任何類型的參數(shù)和返回值,在java的類型中,以下的類型使用時(shí)不需要導(dǎo)入包(import),基本數(shù)據(jù)類型、String、Map、List.當(dāng)然為了避免出錯(cuò),建議只要使用了,就導(dǎo)入包。
然后在服務(wù)端啟動(dòng)一個(gè)服務(wù)并注冊,編寫一個(gè)任意類實(shí)現(xiàn)AIDL文件生成的JAVA接口Stub!
最后在service里面實(shí)例化你的任意類并且在onBind(Intent a)方法上面返回你任意類的對象!
客戶端:
首先把你在服務(wù)端的aidl文件完整的復(fù)制過來一份,并且保證包名一樣
然后調(diào)用bindservice方法綁定你在服務(wù)端創(chuàng)建的方法mContext.bindService(intent, mServiceConnection, 0);
其中mServiceConnection是重點(diǎn):
private ServiceConnection mServiceConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) {//連接上服務(wù)器時(shí)調(diào)用 mService = IRemoteService.Stub.asInterface(service); } @Override public void onServiceDisconnected(ComponentName name) {//沒連上調(diào)用 mService = null; } };
其中mService就是服務(wù)端的aidl對象,我們可以通過它來給服務(wù)端的方法賦值
其中的傳的Intent要注意必須提供一個(gè)intent-filter來匹配請求是否合法,所以我們在客戶端訪問服務(wù)的時(shí)候,還必須傳遞包含了匹配action的Intent哦。
以上內(nèi)容是小編給大家介紹的Android Aidl 通訊機(jī)制 ,希望對大家有所幫助!
相關(guān)文章
Android開發(fā)之圖形圖像與動(dòng)畫(四)AnimationListener簡介
就像Button控件有監(jiān)聽器一樣,動(dòng)畫效果也有監(jiān)聽器,只需要實(shí)現(xiàn)AnimationListener就可以實(shí)現(xiàn)對動(dòng)畫效果的監(jiān)聽,感興趣的朋友可以了解下啊,希望本文對你有所幫助2013-01-01Android多設(shè)備多module打包fat-aar(最新推薦)
這篇文章主要介紹了Android多設(shè)備多module打包(fat-aar),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03Kotlin協(xié)程Channel特點(diǎn)及使用細(xì)節(jié)詳解
這篇文章主要為大家介紹了Kotlin協(xié)程Channel特點(diǎn)及使用細(xì)節(jié)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12RecyclerView滑動(dòng)到指定Position的方法
這篇文章主要為大家詳細(xì)介紹了RecyclerView滑動(dòng)到指定Position的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04Jetpack?Compose對比React?Hooks?API相似度
這篇文章主要為大家介紹了Jetpack?Compose對比React?Hooks?API相似度,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08Android 虛擬按鍵適配動(dòng)態(tài)調(diào)整布局的方法
今天小編就為大家分享一篇Android 虛擬按鍵適配動(dòng)態(tài)調(diào)整布局的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07Flutter自動(dòng)路由插件auto_route使用詳解
這篇文章主要為大家介紹了Flutter自動(dòng)路由插件auto_route的基本使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08Android 重力傳感器在游戲開發(fā)中的應(yīng)用
本文主要介紹Android 重力傳感器,這里整理了詳細(xì)的資料,并且詳細(xì)的說明重力傳感器的使用方法,有興趣的小伙伴可以參考下2016-08-08