Activity傳遞大資料

2021-09-24 12:34:54 字數 637 閱讀 7312

activity跳轉的時候我們一般通過intent bundle傳遞資料,但是在資料較大時就會出現transactiontoolargeexception異常,「the binder transaction failed because it was too large.」

解決方式就是更換activity之間傳遞資料的方式 :

限制傳遞資料大小 如果乙個很長的集合可以擷取一部分傳遞,另外serializable貌似比parcelable占用空間小20倍 但傳輸效率貌似就成反比了

eventbus傳遞 很大程度上也可以解決這個問題

單例

public class dataholder }}

return instance;

}public void setdata(string key, object o)

public object getdata(string key)

return null;

}}

持久化 資料庫、acache、檔案之類的

這樣傳遞的缺點同樣明顯,資料量很大的時候讀寫時間慢,效率低下,io容易出問題

我在專案中使用了第二種方式解決乙個集合資料傳遞的問題

[activity之間傳遞資料的方式及常見問題總結]

Activity之間傳遞資料

在activity之間傳遞資料時有兩種方式 1 serializable方式 序列化方式,即將乙個物件轉化為可儲存或者是可傳輸的內容,相應的將資料從記憶體卡中讀取出來是反序列化方式 2 parcelable方式 將乙個完整的物件分解成每乙個都可以用intent傳輸的物件。使用serializable...

Activity間傳遞資料

1.從當前的activity傳遞資料到下乙個activity 1 傳送方 當前的activity bundle bundle new bundle bundle.putstring name haoye bundle.putint id 10 intent intent new intent int...

在Activity之間傳遞資料

在乙個activity中啟動另乙個activy,取得資料,如 在應用 a 中啟動 通訊錄,選擇目標使用者,返回,以便在a 中使用選擇的通訊錄資料,基本過程如下 intent intent new intent 開啟pictures畫面type設定為image intent.settype image...