博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Intent传递大量数据崩溃
阅读量:6343 次
发布时间:2019-06-22

本文共 864 字,大约阅读时间需要 2 分钟。

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

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


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

转载地址:http://ncyla.baihongyu.com/

你可能感兴趣的文章
ajax异步的问题,(主要解决有时候前台打断点和不打断点结果不一样的问题,一般情况下是存在异步的问题)...
查看>>
iOS微信实现第三方登录的方法
查看>>
在 Linux 下搭建 Git 服务器***
查看>>
在无人值守程序(服务)中调用Microsoft Graph
查看>>
看了吗网址链接
查看>>
零元学Expression Blend 4 – Chapter 43 如何指定Childwindow PopUp位置
查看>>
WKWebView强大的新特性
查看>>
MongoDB开发学习
查看>>
Html animation by css(Sequence Js Tutorial)
查看>>
PyCharm最新2018激活码
查看>>
window.location
查看>>
mysql数据库优化总结
查看>>
apache php upload file
查看>>
Unix环境高级编程(八)进程关系
查看>>
网页编码
查看>>
linux内核数据结构之kfifo
查看>>
Mac / Windows 下的 FTP 工具filezilla
查看>>
CentOS7中使用yum安装Nginx的方法
查看>>
SparseArray源码解析
查看>>
第1件事 产品经理工作的8个核心步骤
查看>>