Android AIDL中Map參數(shù)傳遞的問題詳解
前言
AIDL是一個(gè)縮寫,全稱是Android Interface Definition Language,也就是Android接口定義語言。
我們都知道aidl是支持map作為參數(shù)傳遞的,但前提是map不能是泛型并且數(shù)據(jù)類型必須是aidl所支持的String,int等的Map參數(shù):
interface IMyAidl { void test(Map<String,String> datas); }
本以為這樣寫就可以正常往下進(jìn)行了,但是這樣會(huì)有錯(cuò),拋出如下異常:
上述錯(cuò)誤中首先說明不知道如何創(chuàng)建Map<K,V>container,但是aidl肯定是支持map參數(shù)傳遞的。最后還指出,這是一個(gè)不知道的類型。
這確實(shí)是一個(gè)問題。
解決方法
我在網(wǎng)上查了一些資料,發(fā)現(xiàn)很少介紹這一方面的。最后在不斷的嘗試中發(fā)現(xiàn)如下寫法能解決:
interface IMyAidl { void test(in Map datas); }
這里需要注意,如果map前面沒有in修飾符,也會(huì)拋出異常:
所以在使用的時(shí)候map必須聲明為in、out或者inout。接下來就能直接使用了。
因?yàn)榫W(wǎng)上對于此問題記錄太少,所以我寫出來解答與我一樣遇到此問題的人。
備注:至于為什么這樣使用,目前還不太清楚,請多指教。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
Android?RecyclerLineChart實(shí)現(xiàn)圖表繪制教程
這篇文章主要為大家介紹了Android?RecyclerLineChart實(shí)現(xiàn)圖表繪制教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12Android系統(tǒng)的五種數(shù)據(jù)存儲(chǔ)形式實(shí)例(二)
Android系統(tǒng)有五種數(shù)據(jù)存儲(chǔ)形式,分別是文件存儲(chǔ)、SP存儲(chǔ)、數(shù)據(jù)庫存儲(chǔ)、contentprovider 內(nèi)容提供者、網(wǎng)絡(luò)存儲(chǔ)。本文介紹了Android系統(tǒng)的五種數(shù)據(jù)存儲(chǔ)形式,有興趣的可以了解一下。2016-12-12Android實(shí)現(xiàn)定時(shí)器的五種方法實(shí)例詳解
這篇文章主要介紹了Android實(shí)現(xiàn)定時(shí)器的五種方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02百度語音識(shí)別(Baidu Voice) Android studio版本詳解
這篇文章主要介紹了百度語音識(shí)別(Baidu Voice) Android studio版本詳解的相關(guān)資料,需要的朋友可以參考下2016-09-09Android利用ContentProvider讀取短信內(nèi)容
這篇文章主要為大家詳細(xì)介紹了Android利用ContentProvider讀取短信內(nèi)容,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11Android ViewDragHelper仿淘寶拖動(dòng)加載效果
這篇文章主要為大家詳細(xì)介紹了Android ViewDragHelper仿淘寶拖動(dòng)加載效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08Android WebView實(shí)現(xiàn)全屏播放視頻
WebView是Android系統(tǒng)中的原生控件,其主要功能與前端頁面進(jìn)行響應(yīng)交互,快捷省時(shí)地實(shí)現(xiàn)如期的功能,相當(dāng)于增強(qiáng)版的內(nèi)置瀏覽器。這篇文章主要介紹的是利用WebView實(shí)現(xiàn)全屏播放視頻的功能,感興趣的小伙伴可以了解一下2021-12-12