Android加载数据ListView优化内存实现

本文探讨了Android开发中ListView在加载大量数据时出现内存溢出的问题,分析了问题原因在于快速滑动导致内存无法及时回收。提出了通过优化Adapter的getView()方法,实现内存复用以解决此问题。
摘要由CSDN通过智能技术生成

问题分析

在移动端项目开发中,基于加载大数据量的原因,经常出现内存溢出的现象,那么减少内存占用,在真实开发中着实很重要,下面介绍下ListView加载数据量大时解决思路:

我们应该碰到过这样的情况,对于加载的listview,我们慢慢滑动数据时,系统加载数据没有问题,但是当加快滑动数据时,就会出现内存溢出的问题(这里不考虑分页加载方法)。总结这是因为手机屏幕显示的原因,每次加载数据是有限的,慢慢滑动数据,在加载数据的同时,系统能有时间回收不用的内存,才不会暴露问题,但是,加快滑动,内存回收GC来不及,慢慢内存就满了。知道了原因,加大内存,减慢滑动速度显然不是好的方案,实现内存重复使用才是最重要的。

解决方案

我们知道,数据最后显示在手机屏幕,是通过Adapter适配器来实现的,在其默认实现方法getView()方法中,我们实现如下代码:

		//有多少个条目被显示,这个方法就会被调用多少次
		@Override
		public View getView(final int position, View convertView, ViewGroup parent) {
			View view;
			ViewHolder holder;
			//1.减少内存中view对象创建的个数(优化listView,避免内存溢出)
			if(convertView==null){
				Log.i(TAG,"创建新的view对象:"+position);
				//把一个布局文件转化成  view
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值