博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ListView的几种常见的优化方法(三)
阅读量:7045 次
发布时间:2019-06-28

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

hot3.png

优化三:

上面的两个例子中ListView都是显示的本地的List集合中的内容,List的长度也只有100个,我们可以毫不费力一次性加载完这100个数据;但是实际应用中,我们往往会需要使用Listview来显示网络上的内容,比如说我们拿使用ListView显示新闻为例:

其一:假如网络情况很好,我们使用的手机也许能够一下子加载完所有新闻数据,然后显示在中,用户可能感觉还好,假如说在网络不太顺畅的情况下,用户加载完所有网络的数据,可能这个list是1000条新闻,那么用户可能需要面对一个空白的Activity好几分钟,这个显然是不合适的。

其二:我们知道虚拟机给每个应用分配的运行时内存是一定的,一般性能不太好的机器只有16M,好一点的可能也就是64M的样子,假如说我们现在要浏览的新闻总数为一万条,即便是网络很好的情况下,我们可以很快的加载完毕,但是多数情况下也会出现内存溢出从而导致应用崩溃的情况。

那么为了解决上面的两个问题,我们需要进行分批加载,比如说1000条新闻的List集合,我们一次加载20条,等到用户翻页到底部的时候,我们再添加下面的20条到List中,再使用Adapter刷新ListView,这样用户一次只需要等待20条数据的传输时间,不需要一次等待好几分钟把数据都加载完再在ListView上显示。其次这样也可以缓解很多条新闻一次加载进行产生OOM应用崩溃的情况。

实际上,分批加载也不能完全解决问题,因为虽然我们在分批中一次只增加20条数据到List集合中,然后再刷新到ListView中去,假如有10万条数据,如果我们顺利读到最后这个List集合中还是会累积海量条数的数据,还是可能会造成OOM的情况,这时候我们就需要用到分页,比如说我们将这10万条数据分为1000页,每一页100条数据,每一页加载时都覆盖掉上一页中List集合中的内容,然后每一页内再使用分批加载,这样用户的体验就会相对好一些。

转载于:https://my.oschina.net/u/2971691/blog/795402

你可能感兴趣的文章
nodejs中几个excel模块的简单对比
查看>>
面向对象三大特征
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
Java基础学习总结(14)——Java对象的序列化和反序列化
查看>>
我的友情链接
查看>>
Java基础学习总结(22)——异常处理
查看>>
Ansible学习01-常用模块
查看>>
Java基础学习总结(21)——数组
查看>>
我的友情链接
查看>>
RHEL6.5 部署DNS服务器
查看>>
Maven学习总结(八)——使用Maven构建多模块项目
查看>>
Java基础学习总结(9)——this关键字
查看>>
Redis——订阅
查看>>
iOS iPhone 开发中的文件读写及数据存储
查看>>
Oracle Database XE
查看>>
RAID磁盘阵列笔记
查看>>
使用hadoop进行大规模数据的全局排序
查看>>
润乾报表实现可重复分组报表及改进
查看>>