android傳遞map Android傳遞數(shù)據(jù)

android如何使用intent的傳輸一個(gè)ArrayListMapString,Node類型...

利用Intent對(duì)象攜帶數(shù)據(jù) 通過查詢Intent/Bundle的API文檔,我們可以獲知,Intent/Bundle支持傳遞基本類型的數(shù)據(jù)和基本類型的數(shù)組數(shù)據(jù),以及String/CharSequence類型的數(shù)據(jù)和String/CharSequence類型的數(shù)組數(shù)據(jù)。

創(chuàng)新互聯(lián)科技有限公司專業(yè)互聯(lián)網(wǎng)基礎(chǔ)服務(wù)商,為您提供棕樹數(shù)據(jù)中心,高防物理服務(wù)器租用,成都IDC機(jī)房托管,成都主機(jī)托管等互聯(lián)網(wǎng)服務(wù)。

但是Intent的傳送效率也不是很高,特別是當(dāng)傳遞一些如Bitmap的大數(shù)據(jù),用Intent傳遞超過500K的Bitmap,就會(huì)造成Framework層的Java Binder掛掉,結(jié)果就是傳遞不成功。這點(diǎn)可以算成是Android的一個(gè)弊端,沒有很好的解決方案。

因此,Intent在這里起著一個(gè)媒體中介的作用,專門提供組件互相調(diào)用的相關(guān)信息,實(shí)現(xiàn)調(diào)用者與被調(diào)用者相互聯(lián)系。你可以把從服務(wù)器中獲取的數(shù)據(jù)封裝到一個(gè)類中間中,然后通過Parcelable打包一下。

android中怎么在兩個(gè)頁面中傳遞bitmap變量

那么對(duì)于用戶自己定義的數(shù)據(jù)結(jié)構(gòu)是無法直接用Intent來傳送的,如果想要通過Intent來傳遞自定義數(shù)據(jù),可以讓數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)Parcelable接口,這樣就可以把數(shù)據(jù)放入Intent。

因?yàn)锽itmap implement Parcelable,所以你可以選擇直接使用intent.putExtra()傳遞,也可以使用Bundle。

數(shù)據(jù)類型有限,比如遇到不可序列化的數(shù)據(jù)Bitmap,InputStream, 或者LinkList鏈表等等數(shù)據(jù)類型就不太好用。

你可以得到每個(gè)item的圖片,然后將圖片轉(zhuǎn)流,然后intent將圖片的字節(jié)數(shù)組傳遞過去,然后在第二個(gè)activity中,使用bitmapfactory的方法將流再轉(zhuǎn)成bitmap,然后set進(jìn)去。

如果不是本地資源文件或者adapter中沒有存儲(chǔ)id,可以把drawable轉(zhuǎn)為bitmap,用intent.putExtra(bitmap, bitmap);傳遞過去。

感覺傳二維碼的字符串內(nèi)容比較好,只需要通過Intent將String傳遞過去,再重新生成一次二維碼就可以了。如果直接傳遞圖片的話,需要從ImageView上將圖片拿下來,將Bitmap對(duì)象傳遞過去,這樣做效率也還不如直接傳遞String。

Android為什么要設(shè)計(jì)出Bundle而不是直接使用HashMap來進(jìn)行數(shù)據(jù)傳遞

HashMap的初始過程 :在并發(fā)環(huán)境下使用HashMap而沒有做同步,可能會(huì)引起死循環(huán),關(guān)于這一點(diǎn),sun的guan 方網(wǎng)站上已有闡述,這并非是bug。

在SavedStateRegistry通過唯一的key獲取到一個(gè)SavedStateProvider,而SavedStateProvider其實(shí)就是返回需要保存的數(shù)據(jù),將對(duì)應(yīng)的需要緩存的數(shù)據(jù)一一返回,然后保存在系統(tǒng)緩存時(shí)的回調(diào)到onSaveInstanceState的方法參數(shù)Bundle中進(jìn)行保存。

事實(shí)上它完全相當(dāng)于一個(gè)HashMap,唯一不同的就是HashMap中的Value可以是任何對(duì)象,而SharedPreferences中的值只能存儲(chǔ)基本數(shù)據(jù)類型(primitive types)。 對(duì)于它的使用方法,可以參考Android Developer Guide,這里不重復(fù)。

超過闕值會(huì)進(jìn)行擴(kuò)容操作,概括的講就是擴(kuò)容后的數(shù)組大小是原數(shù)組的2倍,將原來的元素重新hashing放入到新的散列表中去。

雖然 HashMap 和 HashSet 實(shí)現(xiàn)的接口規(guī)范不同,但它們底層的 Hash 存儲(chǔ)機(jī)制完全一樣,甚至 HashSet 本身就采用 HashMap 來實(shí)現(xiàn)的。

原始數(shù)據(jù)類型: 在Activity/Servier之間傳遞臨時(shí)性的原始數(shù)據(jù),可以使用Intent的putExtras方法來傳遞數(shù)據(jù)。若傳遞的數(shù)據(jù)需要長久保存,則使用SharedPreference類來完成。 傳遞對(duì)象。

網(wǎng)頁題目:android傳遞map Android傳遞數(shù)據(jù)
當(dāng)前地址:http://muchs.cn/article22/dgosdcc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)商城網(wǎng)站、企業(yè)網(wǎng)站制作、品牌網(wǎng)站設(shè)計(jì)、小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司