Intent传递大量数据崩溃

探讨了在Android应用中使用Intent传递大数据量时遇到的问题及解决方案,包括内存占用差异的原因及替代方案。

####背景: 上一级的列表页, 需要选中几条或者多条或者全部列表, 然后将数据传递到下一级页面.

intent.putExtra("selectList", selectDataArr);
复制代码

这是创建的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比对出师选中的那些数据, 当然也有缺陷,如果选的数据多,循环次数也很多


毕竟刚接触安卓不久, 很多底层原理都还不大懂, 解决问题的方法也可能不够好, 如果有更好的方式, 希望不累赐教.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值