ListView的几种常见的优化方法(三)

优化三:网络

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

其一:假如网络状况很好,咱们使用的手机也许可以一会儿加载完全部新闻数据,而后显示在ListView中,用户可能感受还好,假如说在网络不太顺畅的状况下,用户加载完全部网络的数据,可能这个list是1000条新闻,那么用户可能须要面对一个空白的Activity好几分钟,这个显然是不合适的。优化

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

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

实际上,分批加载也不能彻底解决问题,由于虽然咱们在分批中一次只增长20条数据到List集合中,而后再刷新到ListView中去,假若有10万条数据,若是咱们顺利读到最后这个List集合中仍是会累积海量条数的数据,仍是可能会形成OOM的状况,这时候咱们就须要用到分页,好比说咱们将这10万条数据分为1000页,每一页100条数据,每一页加载时都覆盖掉上一页中List集合中的内容,而后每一页内再使用分批加载,这样用户的体验就会相对好一些。get

相关文章
相关标签/搜索