深入理解Activity之間的數(shù)據(jù)傳遞
Activity之間是沒(méi)有辦法直接傳遞數(shù)據(jù)的。Android的設(shè)計(jì)原則是,用Intent在不同的Activity和進(jìn)程之間進(jìn)行通信,但是通常來(lái)講,Intent中只能存入基本數(shù)據(jù)類型和系統(tǒng)默認(rèn)支持的比如Uri之類的。那么對(duì)于用戶自己定義的數(shù)據(jù)結(jié)構(gòu)是無(wú)法直接用Intent來(lái)傳送的,如果想要通過(guò)Intent來(lái)傳遞自定義數(shù)據(jù),可以讓數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)Parcelable接口,這樣就可以把數(shù)據(jù)放入Intent。但是Intent的傳送效率也不是很高,特別是當(dāng)傳遞一些如Bitmap的大數(shù)據(jù),曾經(jīng)在有一次遇到過(guò),用Intent傳遞超過(guò)500K的Bitmap,就會(huì)造成Framework層的Java Binder掛掉,結(jié)果就是傳遞不成功。
這點(diǎn)可以算成是Android的一個(gè)弊端,沒(méi)有很好的解決方案。能做到的就是盡量設(shè)計(jì)的時(shí)候注意,盡量讓Activity之間共享基本數(shù)據(jù)類型。
Android本身的應(yīng)用中也深受其害,可以看到有很多應(yīng)用程序的源代碼中的主要的類在三千行以上的不在少數(shù),比如Browser中的BrowserActivity有四千多行;Mms中的ComposeMessageActivity也有四千多行。等等。為什么一個(gè)類會(huì)如此之大,就是因?yàn)樗鼈兪浅绦虻闹黜?yè)面,是業(yè)務(wù)的核心邏輯所在,里面也控制著很多的其他的數(shù)據(jù)結(jié)構(gòu),而又無(wú)法與另外的Activity共享,所以就只能在一個(gè)Activity里面做所的事情。
另外,雖然不是很好的解決,但也還可以接受,就是對(duì)某些數(shù)據(jù)和邏輯類用單鍵模式,這樣每個(gè)包內(nèi)的類(包括Activity)都可以訪問(wèn),比如Mms中的data包里面的WorkingMessage,Conversation,Contact和ContactList都是單鍵。
希望以后的SDK中能有比較好的解決方法。
相關(guān)文章
android 預(yù)加載進(jìn)程的實(shí)現(xiàn)方法
這篇文章主要介紹了android 預(yù)加載進(jìn)程的實(shí)現(xiàn)方法,大家需要注意清單文件中注冊(cè)并制定 android:process 要預(yù)加載的進(jìn)程,需要的朋友可以參考下2024-05-05
Android自定義StepView仿外賣(mài)配送進(jìn)度
這篇文章主要為大家詳細(xì)介紹了Android自定義StepView仿外賣(mài)配送進(jìn)度,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
android開(kāi)發(fā)教程之實(shí)現(xiàn)listview下拉刷新和上拉刷新效果
這篇文章主要介紹了android實(shí)現(xiàn)listview下拉刷新和上拉刷新效果,Android的ListView上拉下拉刷新,原理都一樣,在Touch事件中操作header/footer的paddingTop屬性,需要的朋友可以參考下2014-02-02
Android利用RecyclerView實(shí)現(xiàn)列表倒計(jì)時(shí)效果
這篇文章主要為大家詳細(xì)介紹了Android利用RecyclerView實(shí)現(xiàn)列表倒計(jì)時(shí)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09
Android開(kāi)發(fā)性能優(yōu)化總結(jié)
這篇文章主要介紹了Android開(kāi)發(fā)性能優(yōu)化總結(jié)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09
Android自定義控件ViewGroup實(shí)現(xiàn)標(biāo)簽云(四)
這篇文章主要為大家詳細(xì)介紹了Android自定義控件ViewGroup實(shí)現(xiàn)標(biāo)簽云的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08
Android布局之GridLayout網(wǎng)格布局
網(wǎng)格布局標(biāo)簽是GridLayout。這個(gè)布局是android4.0新增的布局。這個(gè)布局只有4.0之后的版本才能使用。本文給大家介紹Android布局之GridLayout網(wǎng)格布局相關(guān)知識(shí),感興趣的朋友一起學(xué)習(xí)吧2015-12-12
Android主項(xiàng)目與Module中R類的區(qū)別詳解
這篇文章主要給大家介紹了關(guān)于Android主項(xiàng)目與Module中R類的區(qū)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)各位Android開(kāi)發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-02-02

