`
handsomeliuyang
  • 浏览: 314969 次
  • 性别: Icon_minigender_1
  • 来自: 益阳
社区版块
存档分类
最新评论

Bitmap OutOfMemery

 
阅读更多
通过GridView的getLastVisiblePosition()和getFirstVisiblePosition()方法确认当前GridView控件中将会显示Dataset中的数据范围,在该范围之内的图片应该是已经解码过的,而不在该区间中的图片,可以在适当的时候使用recycle()方法回收。实现方式可以使用HashMap来存储对应的ID和Bitmap
HashMap<Integer, Bitmap> picMap,Integer的值对应path的ArrayList即可,系统每次回调getView()的时候,通过上面的两个方法,确定需要显示的ID范围,遍历该范围中的ID,从picMap中查询,如果对应ID的Bitmap为空的话,就通过path的ArrayList中对应的文件名解码图像,如果不为空,那么就直接设置即可。而不在该区间的图片最好是调用recycle()回收,要不就很有可能出现OOM错误。
至于预加载的意思就是每次得到需要显示的范围之后,再扩大一定的范围,使得用户在快速切换图片时,不至于出现因为解码而感觉到的停滞感。
建议扩大的范围为起始位置和终止位置分别往前和往后扩大当前GridView一行显示缩略图的个数,例如已知将显示8~23号图片,GridView每行显示4个缩略图,那么将其范围扩大到4~27,保证处于该区间的ID对应的图片解码成功,并设置给ImageView,而不在该区间内的图片尽量使用recycle()方法回收。不过如果楼主的应用中不会碰到特别多的图片的话,建议不要把问题复杂化。当然如果有需求的话,这样做会保证程序不出错,只是稍微复杂了一些。
分享到:
评论

相关推荐

    bitmap上传图片demo

    在Android开发中,Bitmap是处理图像数据的基本类,它用于表示位图图像。"bitmap上传图片demo"是一个示例项目,展示了如何利用Bitmap处理本地图片并进行上传,同时提供了将图片裁剪为圆形以适合作为头像的功能。在这...

    Android下利用Bitmap切割图片

    在Android开发中,Bitmap是处理图像的基本类,用于在内存中表示位图图像。当我们需要对图片进行裁剪、缩放或进行其他操作时,Bitmap提供了丰富的功能。本篇文章将详细探讨如何在Android环境下利用Bitmap来切割图片。...

    Android canvas drawBitmap方法详解及实例

    `drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)`是`drawBitmap()`方法的一个重载版本,其参数含义如下: 1. **Bitmap bitmap**: 这是你要绘制的位图对象,通常是从资源文件、内存缓存或者直接创建的...

    Activity跳转时传递Bitmap对象

    在Android开发中,Activity之间的数据传递是常见的操作,特别是在处理图像数据时,如Bitmap对象。Bitmap是Android系统中用于表示图像的重要类,它包含了图像的所有像素信息。在不同Activity之间传递Bitmap,通常是...

    c#Bitmap类和Graphics类

    C#中的Bitmap类和Graphics类 C#中的Bitmap类和Graphics类是两种常用的图形处理类,它们之间存在一定的差异和联系。在本节中,我们将详细介绍Bitmap类和Graphics类的概念、方法和应用场景。 一、Bitmap类 Bitmap类...

    C#中bitmap、stream、byte类型转换实例

    在处理图像时,我们可能会遇到需要在不同的数据类型之间转换的情况,比如从Bitmap到Stream,再到byte数组,最后再还原回Bitmap。这样的转换在上传图片、存储图片数据或在网络中传输时非常常见。本篇文章将详细介绍...

    Android-使用Matrix对Bitmap进行处理

    Bitmap rotatedBitmap = Bitmap.createBitmap(originalBitmap, 0, 0, originalBitmap.getWidth(), originalBitmap.getHeight(), matrix, true); ``` 除了旋转,我们还可以使用Matrix进行缩放操作。例如,将Bitmap按...

    android中对Bitmap图片设置任意角为圆角

    在Android开发中,Bitmap是用于表示图像数据的基本对象,它是一种内存中的图片表示形式。而当我们需要在应用程序中展示带有圆角的图片时,通常会用到Bitmap的处理技巧。本篇文章将深入探讨如何在Android中对Bitmap...

    C# Bitmap转RGB32(NI)

    Bitmap newBitmap = new Bitmap(bitmap.Width, bitmap.Height, PixelFormat.Format32bppArgb); ``` 3. **遍历像素并复制**: 接下来,我们需要遍历原始Bitmap的每一个像素,将其转换为RGB32格式,并复制到新Bitmap中...

    处理bitmap内存溢出问题

    在Android开发中,处理`Bitmap`内存溢出问题是一个常见的挑战,尤其是在处理高分辨率或大尺寸图片时。当应用程序尝试加载或操作一张超出虚拟机内存预算的`Bitmap`时,系统会抛出`java.lang.OutOfMemoryError: bitmap...

    canvas 转换成bitmap

    "Android 中 Canvas 转换为 Bitmap" Android 中 Canvas 转换为 Bitmap 是一种常见的需求,especially 在需要将 Canvas 绘制的图形显示在 ImageView 中的情况下。在这篇文章中,我们将详细介绍如何将 Canvas 转换为 ...

    将Bitmap转换为Byte[]

    在VC(Visual C++)环境下,Bitmap对象是用于表示图像的一种常见数据结构,而`Byte[]`(字节数组)则常用于数据传输或存储。本篇文章将详细解释如何在VC中将Bitmap对象转换为Byte数组。 首先,理解Bitmap对象。...

    c#.net Bitmap类的基本使用方法

    在C#.NET编程环境中,`Bitmap`类是用于处理图像的核心类,它允许开发者创建、加载、修改和显示位图图像。本篇文章将详细介绍`Bitmap`类的基本使用方法,包括其构造函数、属性、方法以及如何与其他图形组件交互。 1....

    Android中Glide获取图片Path、Bitmap用法详解

    软件开发网在此之前给大家介绍过图片加载框架Glide的基本用法介绍,大家可以先参考一下,本篇内容更加深入的分析了Glide获取图片Path、Bitmap用法,以及实现的代码分析。 1. 获取Bitmap: 1)在图片下载缓存好之后...

    Android 实现把bitmap图片的某一部分的颜色改成其他颜色

    在 Android 中,我们可以使用 Bitmap 类来处理 bitmap 图片,该类提供了多种方法来处理 bitmap 图片,例如 getPixels() 方法可以获取 bitmap 图片的像素颜色值,setPixels() 方法可以设置 bitmap 图片的像素颜色值。...

    Bitmap图像转halcon图像

    而Bitmap图像则是一种常见的图像格式,广泛存在于Windows操作系统和其他多种环境中。在进行机器视觉项目时,有时我们需要将Bitmap图像转换为Halcon能识别的图像类型,即HObject,以便在Halcon中进行后续的图像分析和...

    Bitmap格式说明文档

    Bitmap格式说明文档 Bitmap格式说明文档是Windows操作系统中使用的图形文件格式的说明文档,涵盖了Bitmap和ICON格式的详细说明,并且讲述了WIN API中对格式的封装。 一、图形文件格式 在Windows操作系统中,图形...

    RoaringBitmap-0.7.45-API文档-中英对照版.zip

    赠送jar包:RoaringBitmap-0.7.45.jar; 赠送原API文档:RoaringBitmap-0.7.45-javadoc.jar; 赠送源代码:RoaringBitmap-0.7.45-sources.jar; 赠送Maven依赖信息文件:RoaringBitmap-0.7.45.pom; 包含翻译后的API...

    Bitmap位图旋转范例

    Bitmap位图是Android系统中广泛使用的图像处理类,主要用于显示和操作像素级别的图像数据。在Android开发中,我们经常会遇到需要对Bitmap进行各种操作的情况,其中旋转Bitmap就是一种常见的需求,比如用户拍摄照片后...

    Android将bitmap保存到本地png/jpg格式等

    在Android开发中,Bitmap是用于处理图像的基本类,它代表了一个位图图像。有时我们需要将Bitmap对象保存到本地,例如用户拍摄的照片或者加载的网络图片,以便后续使用或分享。本篇文章将深入探讨如何在Android中将...

Global site tag (gtag.js) - Google Analytics