Intent傳遞大量數據崩潰

背景:

上一級的列表頁, 需要選中幾條或者多條或者全部列表, 然后將數據傳遞到下一級頁面.

intent.putExtra("selectList", selectDataArr);
bean.jpg

這是創建的Bean文件, 全選傳值時要傳遞的就是dataList里面的內容, 那么問題來了 :

在聲明dataList的ArrayList的泛型時, 這個小的BackListItemBean如果是直接嵌套在大的class BacklogListEntity內部, 當時測試數據有180條, 則直接崩潰, 報一個intent傳遞內容太大的錯誤. 如果把這個小的 BackListItemBean 單獨拿出來自己新建一個java文件, 則180條測試數據可以傳遞, 可以傳遞900條左右, 如果數據在數, 也會超過intent的限制.

問題1 : 小的BackListItemBean是嵌套或者不嵌套, 為什么會占內存不同?
問題2 : intent傳遞較大量級的數據, 用什么方式?

回答1:(個人見解,如錯請指正,謝謝)

如果是嵌套的小bean, 要想取到小的bean就要使用BackListItemBean.BacklogListEntity.BackListItemBean 這樣等于嵌套兩層, 這樣即使只是用小的bean, 也會多存儲上兩層的地址信息, 單獨的文件就不需要這兩層的地址信息,所以可以傳遞的條數會多一些.

回答2:

方法1,使用靜態類,傳遞時把數據存在靜態類里面,但是使用后要注意及時置為null, 不過里面會牽扯一些java內存機制的問題.

方法2, 寫數據庫, 但是存取耗時, 不推薦

方法3, 只記住選中的item的數據的id, 拼成字符串傳到下一級頁面,然后再鞋以及頁面再請求一次獲取數據的接口,然后根據傳進來的id比對出師選中的那些數據, 當然也有缺陷,如果選的數據多,循環次數也很多


畢竟剛接觸安卓不久, 很多底層原理都還不大懂, 解決問題的方法也可能不夠好, 如果有更好的方式, 希望不累賜教.

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1、Intent 可以傳遞的數據類型 在 Intent和IntentFilters(1) 中我們知道了通過 Int...
    CnPeng閱讀 2,826評論 0 10
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,869評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,090評論 25 708
  • 媽媽被妹妹接走了 我在自己小小的家里 四顧茫然 媽媽蒸的雜糧窩窩 還在筐子里 水蒸氣把我的睫毛 熏染 媽媽幫我縫...
    阿蓮0609閱讀 212評論 0 2
  • 品相是用來表示收藏品完好程度的一個綜合指標。對和田玉而言,泛指純凈度、細膩度、完整度、形狀、工藝、白度等的總和,總...
    9a2afe2f3557閱讀 447評論 0 0