深入理解Activity之間的數(shù)據(jù)傳遞
Activity之間是沒有辦法直接傳遞數(shù)據(jù)的。Android的設(shè)計原則是,用Intent在不同的Activity和進程之間進行通信,但是通常來講,Intent中只能存入基本數(shù)據(jù)類型和系統(tǒng)默認(rèn)支持的比如Uri之類的。那么對于用戶自己定義的數(shù)據(jù)結(jié)構(gòu)是無法直接用Intent來傳送的,如果想要通過Intent來傳遞自定義數(shù)據(jù),可以讓數(shù)據(jù)結(jié)構(gòu)實現(xiàn)Parcelable接口,這樣就可以把數(shù)據(jù)放入Intent。但是Intent的傳送效率也不是很高,特別是當(dāng)傳遞一些如Bitmap的大數(shù)據(jù),曾經(jīng)在有一次遇到過,用Intent傳遞超過500K的Bitmap,就會造成Framework層的Java Binder掛掉,結(jié)果就是傳遞不成功。
這點可以算成是Android的一個弊端,沒有很好的解決方案。能做到的就是盡量設(shè)計的時候注意,盡量讓Activity之間共享基本數(shù)據(jù)類型。
Android本身的應(yīng)用中也深受其害,可以看到有很多應(yīng)用程序的源代碼中的主要的類在三千行以上的不在少數(shù),比如Browser中的BrowserActivity有四千多行;Mms中的ComposeMessageActivity也有四千多行。等等。為什么一個類會如此之大,就是因為它們是程序的主頁面,是業(yè)務(wù)的核心邏輯所在,里面也控制著很多的其他的數(shù)據(jù)結(jié)構(gòu),而又無法與另外的Activity共享,所以就只能在一個Activity里面做所的事情。
另外,雖然不是很好的解決,但也還可以接受,就是對某些數(shù)據(jù)和邏輯類用單鍵模式,這樣每個包內(nèi)的類(包括Activity)都可以訪問,比如Mms中的data包里面的WorkingMessage,Conversation,Contact和ContactList都是單鍵。
希望以后的SDK中能有比較好的解決方法。
相關(guān)文章
Android編程設(shè)置TextView顏色setTextColor用法實例
這篇文章主要介紹了Android編程設(shè)置TextView顏色setTextColor用法,結(jié)合實例形式分析了Android設(shè)置TextView顏色setTextColor、ColorStateList等方法的使用技巧與布局文件的設(shè)置方法,需要的朋友可以參考下2016-01-01Android Init進程對信號的處理流程詳細(xì)介紹
這篇文章主要介紹了Android Init進程對信號的處理流程詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2017-02-02Android開發(fā)之瀏覽器用法實例詳解(調(diào)用uc,opera,qq瀏覽器訪問網(wǎng)頁)
這篇文章主要介紹了Android開發(fā)之瀏覽器用法,結(jié)合實例形式詳細(xì)分析了Android調(diào)用瀏覽器的具體步驟與相關(guān)使用技巧,需要的朋友可以參考下2016-01-01Android統(tǒng)一依賴管理的三種方式總結(jié)
為了項目的管理,依賴包的紡一管理是必要的,下面這篇文章主要給大家介紹了關(guān)于Android統(tǒng)一依賴管理的三種方式,文中通過實例代碼和圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-01-01Android開發(fā)使用Databinding實現(xiàn)關(guān)注功能mvvp
這篇文章主要為大家介紹了Android開發(fā)使用Databinding實現(xiàn)關(guān)注功能mvvp示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09Android無需權(quán)限調(diào)起系統(tǒng)相機
在進行一些小型APP的開發(fā),或者是對拍照界面沒有自定義要求時,我們可以用調(diào)起系統(tǒng)相機的方式快速完成拍照需求2023-03-03Android實現(xiàn)雅虎新聞?wù)虞d視差動畫效果
這篇文章主要介紹了Android實現(xiàn)雅虎新聞?wù)虞d視差動畫效果,通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08