十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
利用Intent對象攜帶數(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,就會造成Framework層的Java Binder掛掉,結(jié)果就是傳遞不成功。這點(diǎn)可以算成是Android的一個弊端,沒有很好的解決方案。
因此,Intent在這里起著一個媒體中介的作用,專門提供組件互相調(diào)用的相關(guān)信息,實(shí)現(xiàn)調(diào)用者與被調(diào)用者相互聯(lián)系。你可以把從服務(wù)器中獲取的數(shù)據(jù)封裝到一個類中間中,然后通過Parcelable打包一下。
那么對于用戶自己定義的數(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ù)類型就不太好用。
你可以得到每個item的圖片,然后將圖片轉(zhuǎn)流,然后intent將圖片的字節(jié)數(shù)組傳遞過去,然后在第二個activity中,使用bitmapfactory的方法將流再轉(zhuǎn)成bitmap,然后set進(jìn)去。
如果不是本地資源文件或者adapter中沒有存儲id,可以把drawable轉(zhuǎn)為bitmap,用intent.putExtra(bitmap, bitmap);傳遞過去。
感覺傳二維碼的字符串內(nèi)容比較好,只需要通過Intent將String傳遞過去,再重新生成一次二維碼就可以了。如果直接傳遞圖片的話,需要從ImageView上將圖片拿下來,將Bitmap對象傳遞過去,這樣做效率也還不如直接傳遞String。
HashMap的初始過程 :在并發(fā)環(huán)境下使用HashMap而沒有做同步,可能會引起死循環(huán),關(guān)于這一點(diǎn),sun的guan 方網(wǎng)站上已有闡述,這并非是bug。
在SavedStateRegistry通過唯一的key獲取到一個SavedStateProvider,而SavedStateProvider其實(shí)就是返回需要保存的數(shù)據(jù),將對應(yīng)的需要緩存的數(shù)據(jù)一一返回,然后保存在系統(tǒng)緩存時的回調(diào)到onSaveInstanceState的方法參數(shù)Bundle中進(jìn)行保存。
事實(shí)上它完全相當(dāng)于一個HashMap,唯一不同的就是HashMap中的Value可以是任何對象,而SharedPreferences中的值只能存儲基本數(shù)據(jù)類型(primitive types)。 對于它的使用方法,可以參考Android Developer Guide,這里不重復(fù)。
超過闕值會進(jìn)行擴(kuò)容操作,概括的講就是擴(kuò)容后的數(shù)組大小是原數(shù)組的2倍,將原來的元素重新hashing放入到新的散列表中去。
雖然 HashMap 和 HashSet 實(shí)現(xiàn)的接口規(guī)范不同,但它們底層的 Hash 存儲機(jī)制完全一樣,甚至 HashSet 本身就采用 HashMap 來實(shí)現(xiàn)的。
原始數(shù)據(jù)類型: 在Activity/Servier之間傳遞臨時性的原始數(shù)據(jù),可以使用Intent的putExtras方法來傳遞數(shù)據(jù)。若傳遞的數(shù)據(jù)需要長久保存,則使用SharedPreference類來完成。 傳遞對象。