首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >更改ImageView内容会导致OutOfMemoryError

更改ImageView内容会导致OutOfMemoryError
EN

Stack Overflow用户
提问于 2010-02-03 03:11:04
回答 5查看 17.3K关注 0票数 20

我有一个非常简单的应用程序,只有一个ImageView和Button。我的ImageView加载的第一个可绘制资源是在XML布局中使用"android:src“标记指定的,但是在运行时,我希望更改它显示的图片。为此,我启动了一个活动,以便从sd卡中选择一个图像(意图发送到MediaStore.Images.Media.EXTERNAL_CONTENT_URI). )。然而,当图片被选中时,我尝试用所选图片的URI更新ImageView,但是我得到消息"java.lang.OutOfMemoryError:位图大小超过VM预算

我试图加载我的宏达-英雄相机的照片(图片大小约为110万),但没有成功,似乎只工作在低于500KB.However的图片,我需要加载与相机拍摄的照片。,我怎么能解决这个问题?,我做错了什么?在我看来,代码很简单,应该可以工作。

代码语言:javascript
运行
AI代码解释
复制
public void onClick(View v){
 Intent selectImageIntent=new Intent(Intent.ACTION_PICK , 
   android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
   startActivityForResult(selectImageIntent,1);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
 super.onActivityResult(requestCode, resultCode, data);
 if(resultCode==Activity.RESULT_OK){
   Uri selectedImageUri = data.getData();
   Log.i(TAG,"chosen image: "+selectedImageUri.toString());
   ImageView imageView = (ImageView) this.findViewById(R.id.ImageView01);
   imageView.setImageURI(selectedImageUri);//here I get the OutOfMemoryError
   imageView.invalidate();

 }else{
  //canceled
 }

}

附注:这是应用程序应该做的唯一事情,我没有创建其他对象,所以我想指出的是,除了显示图像之外,我不使用堆空间来处理其他东西。

EN

回答 5

Stack Overflow用户

发布于 2010-02-04 06:44:11

似乎在加载一个新的位图之前,我必须回收ImageView显示的位图,现在它可以正常工作了。希望这对其他人有所帮助,在设置新ImageView的内容之前,只需调用折叠方法即可。

((BitmapDrawable)imageView.getDrawable()).getBitmap().recycle();

因此,代码现在看起来如下:

代码语言:javascript
运行
AI代码解释
复制
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
    super.onActivityResult(requestCode, resultCode, data);
    switch(requestCode){
        case INTENT_REQUEST_SELECT_IMAGE:
            if(resultCode==Activity.RESULT_OK){
                Uri selectedImageUri = data.getData();
                Log.i(TAG,"selectedImageUri.getPath()"+selectedImageUri.getPath() );
                ImageView imageView = (ImageView) this.findViewById(R.id.ImageView_of_text);
                ((BitmapDrawable)imageView.getDrawable()).getBitmap().recycle();
                imageView.setImageURI(selectedImageUri);
                imageView.invalidate();

            }else{
                //TODO define what to do in case the user canceled OCR or any other event
            }
            break;
        default:
            break;
    }
}

请注意ImageView位图上的循环调用。

票数 43
EN

Stack Overflow用户

发布于 2011-03-11 16:55:06

这把我逼疯了。

我正在为Xoom构建一个非常大的、高分辨率的全屏图像(800x1232)。

以下代码适用于我:

代码语言:javascript
运行
AI代码解释
复制
public void onStop()
{
    super.onStop();
    imageView.setImageBitmap(null);
}

祝好运!

票数 6
EN

Stack Overflow用户

发布于 2010-10-14 17:01:02

这个问题现在已经解决了。而不仅仅是一行:

代码语言:javascript
运行
AI代码解释
复制
((BitmapDrawable)imageView.getDrawable()).getBitmap().recycle(); 

在更新ImageView内容之前添加以下代码:

代码语言:javascript
运行
AI代码解释
复制
Drawable toRecycle= gallerypic.getDrawable();
if (toRecycle != null) {
    ((BitmapDrawable)gallerypic.getDrawable()).getBitmap().recycle();
}
gallerypic.setImageURI(selectedimage);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2191407

复制
相关文章
tomcat OutOfMemoryError
Exception in thread "Timer-1" java.lang.OutOfMemoryError: PermGen space
阳光岛主
2019/02/19
1.2K0
tomcat OutOfMemoryError
二、OutOfMemoryError实战
本文通过一些可执行代码来验证异常发生的场景,并且会初步介绍几个与内存相关的最基本的虚拟机参数。 本文的主要目的有两个: 1. 通过代码验证Java虚拟机规范中描述的各个运行时区域储存的内容。 2. 希望读者在工作中遇到实际的内存溢出异常时,能根据异常的信息快速判断是哪个区域的内存溢出,知道怎样的代码可能会导致这些区域的内存溢出,以及出现这些异常后该如何处理。
栋先生
2018/09/29
7450
二、OutOfMemoryError实战
ImageView使用
但是编译报错了Error: The resource name must start with a letter
李小白是一只喵
2020/04/24
7860
xlsx的OutOfMemoryError
将数据读入或者导出到xlsx文件的时候,常常需要循环写出, 如 res <- read.xlsx("edgeR_DEgenes.xlsx",1) write.xlsx(data_vitro_down, file="edgeR_DEgenes.xlsx", sheetName = i, append=TRUE, row.names=FALSE) 可能会出现内存不足的报错: Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, : java.lang.OutOfMemoryError: Java heap space 一般只需要重启R或者Rstudio,然后再读入R包前加上options( java.parameters = "-Xmx5000m")就可以,但是一定要在library之前加,如果library之后加是没有用的。
生信编程日常
2020/04/01
9690
Compose 线上分享会内容
本次分享有录屏,可查看 BaguTree 组织地址,感谢校长、强哥、超哥提供的分享平台:http://jetpack.net.cn/#/blog/all[1]
codelang
2022/11/30
1.2K0
Compose 线上分享会内容
OutOfMemoryError异常
我们知道在Java虚拟机内存中,除了程序计数器外,其它的内存区域都可能会发生OutOfMemoryError异常。本文将用具体的事例来演示在什么情况下会出现OutOfMemoryError异常,并以此来演示一下相关的虚拟机参数。
吉林乌拉
2019/08/14
4080
从库mysqldump会导致复制中断
ERROR NO 是1756,而且只是 Slave_SQL_Running 停了。
老叶茶馆
2020/08/31
1.6K0
ImageView.ScaleType
对ImageView.ScaleType,学习安卓需掌握。以官方链接:http://android.xsoftlab.net/reference/android/widget/ImageView.ScaleType.html 所有文字全靠打。
达达前端
2022/04/28
5330
哪些因素会导致慢查询?
不管是开发同学还是DBA,想必大家都遇到慢查询(select,update,insert,delete 语句慢),影响业务稳定性。这里说的慢,有两个含义一是比正常的慢,有可能正常执行时间是10ms,异常的是100ms 。二是sql执行时间超过设置的慢查询标准比如500ms。
用户1278550
2019/06/03
1.3K0
JVM-3. OutOfMemoryError
GC Roots到对象之间有可达路径,垃圾回收机制就不会清除这些对象,在对象数量达到最大堆容积限制就会产生内存溢出。 设置堆最小值参数-Xms和最大值参数-Xmx;设置-XX:+HeapDumpOnOutOfMemoryError参数在内存溢出时Dump出当前内存堆转储快照。 以下代码会出现堆区的OOE:
悠扬前奏
2019/05/29
4740
为什么Handler会导致内存泄漏?
最近在思考关于内存泄露的问题,进而想到了关于我们最常见和熟知的Handler在Activity内导致的内存泄漏的问题,这个问题相信作为开发都是很熟悉的,但是这背后更多的细节和导致泄漏的不同的情况,可能很多人就没有那么了解和清楚了,因此这次和大家分享一下什么情况下会导致内存泄漏,以及内存泄漏背后的故事。
没关系再继续努力
2021/11/22
1.3K0
理解 OutOfMemoryError 异常
OutOfMemoryError 异常应该可以算得上是一个非常棘手的问题。JAVA 的程序员不用像苦逼的 C 语言程序员手动地管理内存,JVM 帮助他们分配内存,释放内存。但是当遇到内存相关的问题,就比如 OutOfMemoryError,如何去排查并且解决就变成一个非常令人头疼的问题。在 JAVA 中,所有的对象都存储在堆中,通常如果 JVM 无法再分配新的内存,内存耗尽,并且垃圾回收器无法及时回收内存,就会抛出 OutOfMemoryError。
madneal
2022/03/11
6910
会声会影2023更新功能内容介绍
会声会影2023是一款非常强大的视频剪辑工具。该软件拥有非常丰富的视频编辑功能。能够帮助用户快速高效的编辑视频,对视频进行多样化的编辑操作,包括简单的剪切与合并,以及高阶的转场、特效、字幕等多种编辑。充分满足用户对于视频的编辑处理需求,也为用户提供了非常便利的操作。会声会影2022通过新的快捷方式和库增强功能使您可以更聪明地工作,从而简化了编辑工作流程。
用户7442547
2022/10/08
1.4K0
分析OutOfMemoryError异常
java.lang.OutOfMemoryError应该java应用程序中非常常见的一个的错误了。
程序那些事
2020/08/18
4970
Android 圆形ImageView
开发过程中我们经常会用到圆形的图片,作为头像、Item图标等等。笔者今天分享出自己常用的实现方式 —— 继承ImageView重写onDraw方法,手动裁剪。绘制完成后,使用方式就和普通的ImageV
饮水思源为名
2019/10/14
2.1K0
Android 圆形ImageView
ImageView缩放选项
用户1172465
2018/01/08
1.6K0
ImageView ScaleType 解析
由代码中可以看出ScaleType有八种属性。我们先上对比图,再分析各个属性的不同。
全栈程序员站长
2022/06/24
4900
ImageView ScaleType 解析
更改默认DNS导致内网域名解析异常,继而导致内网服务异常,如何解决?
更改默认DNS后,激活等内网域名相关的服务比如云监控、云镜、ntp、update 等通过加hosts方式实现
Windows技术交流
2021/09/17
7.8K0
点击加载更多

相似问题

OutofMemoryError ImageView

30

OutOfMemoryError会导致线程死亡吗?

40

设置视图背景会导致OutOfMemoryError

13

JPA流()会导致OutOfMemoryError吗?

13

如何修复ImageView导致的java.lang.OutOfMemoryError?

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档