android加载图片内存溢出,android 解决GridView,ListView 等加载大量网络图片内存溢出(O...

本文介绍如何在Android应用中使用Volley避免图片加载导致的OOM问题,通过3行代码快速集成Volley,实现高效图片下载和多级缓存,提升用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.做android 开发难免会遇到从

1.做android 开发难免会遇到从网上获取大量图片,比如大众点评apk  这是一个ListView组合控件实现的,左边就是图片显示,右边是文字描述。在滑动的时候需要加载大量图片。如果我们用一般的方法实现加载大量图片的话你可能会遇到OOM问题,因此,我们不得不找一个好方法避免这种问题------------Volley。

323aeecfbebc2924d8baba0b0d76486c.png

2.涉及到的android 技术:网络请求,图片下载,多级缓存,内存溢出,等。虽然android 都给我们提供了相应的方法和接口实现这些技术,但程序员每次去写不同的代码实现相同的功能未免做了多余的事情,因此,google工程师就给我们封装了一个jar 包-------Volley  ,Volley里面实现了android 加载大量图片的优秀代码。接下来我们看看怎么用的。想要了解Volley 基础知识  请参考:Volley

相关知识。

3.Volley 用法很简单 3行代码就够了。

private VolleyImageLoader mImageLoader = null;

mImageLoader = new VolleyImageLoader(mContext);

mImageLoader.showImage(mImgView, ImagesUrl.imageThumbUrls[position],

200, 200, R.drawable.ic_launcher);

4.完整代码:/*

* @Title: GridViewAdapter.java

* @Copyright: Corporation. Ltd. Copyright 1998-2018, All rights reserved

* @Description: TODO

* @author: xjp

* @data: 2014年8月15日 下午4:39:36

* @version: V1.0

*/

package com.mktech.photowall;

import com.android.volley.RequestQueue;

import com.android.volley.mytools.VolleyImageLoader;

import com.android.volley.toolbox.ImageLoader;

import com.android.volley.toolbox.Volley;

import com.android.volley.toolbox.ImageLoader.ImageListener;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.ImageView;

/**

* TODO

*

* @author xjp

* @data: 2014年8月15日 下午4:39:36

* @version: V1.0

*/

public class GridViewAdapter extends BaseAdapter {

private LayoutInflater mLayoutInflater = null;

private boolean isFirstLoad = false;

private ImageView mImgView = null;

private Context mContext = null;

private ImageLoader imageLoader = null;

private VolleyImageLoader mImageLoader = null;

public GridViewAdapter(Context context) {

// TODO Auto-generated constructor stub

mContext = context;

mLayoutInflater = LayoutInflater.from(context);

// RequestQueue mQueue = Volley.newRequestQueue(mContext);

// imageLoader = new ImageLoader(mQueue, new ImageCache());

mImageLoader = new VolleyImageLoader(mContext);

}

@Override

public int getCount() {

// TODO Auto-generated method stub

return ImagesUrl.imageThumbUrls.length;

}

@Override

public Object getItem(int position) {

// TODO Auto-generated method stub

return ImagesUrl.imageThumbUrls[position];

}

@Override

public long getItemId(int position) {

// TODO Auto-generated method stub

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

// TODO Auto-generated method stub

if (convertView == null) {

convertView = mLayoutInflater.inflate(R.layout.photo_layout, null);

mImgView = (ImageView) convertView.findViewById(R.id.photo);

convertView.setTag(mImgView);

} else {

mImgView = (ImageView) convertView.getTag();

}

// loadImage(ImagesUrl.imageThumbUrls[position], mImgView);

mImageLoader.showImage(mImgView, ImagesUrl.imageThumbUrls[position],

200, 200, R.drawable.ic_launcher);

return convertView;

}

// private void loadImage(String url, final ImageView imageView) {

//

// ImageListener listener = ImageLoader.getImageListener(imageView, 0, 0);

// imageLoader.get(url, listener, 150, 150);

// }

}

5.完整工程下载

完整的工程代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值