通用图像装载机的Andr​​oid:更改布局属性导致的OutOfMemoryError [英] Universal Image Loader Android : Changing Layout properties causes OutOfMemoryError

查看:101
本文介绍了通用图像装载机的Andr​​oid:更改布局属性导致的OutOfMemoryError的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有多个活动。每个活动都显示在GridView的图像。作为一个独立的应用程序的每个活动工作正常。当我打电话从另外一个活动时出现问题。
GridView控件(第二/第三活动)的一个项目是一个ImageView的:

I have multiple activity. Each activity shows images in a GridView. Each activity as an standalone application works fine. The problem occurs when i call an activity from another one. An item of GridView(second/third activities) is an imageView :

 <ImageView
        android:id="@+id/grid_sub_item_image"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:contentDescription="@string/descr_image"
        android:scaleType="centerCrop" >
    </ImageView>

当我设置宽度,高度在DP / PX它的工作原理well.LIke:

When I set width, height in dp/px it works well.LIke:

android:layout_width="100dp"
            android:layout_height="100dp"

对于我来说工作正常。

Works fine for me.

但是,当我设置高度/宽度:WRAP_CONTENT / FILL_PARENT,其走出内存异常:

But when I set height/width : wrap_content/fill_parent, its getting Out of Memory exception:

null
java.lang.OutOfMemoryError
android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:493)
com.nostra13.universalimageloader.core.ImageDecoder.decode(ImageDecoder.java:83)
com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.decodeWithOOMHandling(LoadAndDisplayImageTask.java:187)
com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.decodeImage(LoadAndDisplayImageTask.java:170)
com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryLoadBitmap(LoadAndDisplayImageTask.java:126)
com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run(LoadAndDisplayImageTask.java:72)
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442)
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
java.util.concurrent.FutureTask.run(FutureTask.java:137)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
java.lang.Thread.run(Thread.java:856)

我在每一个活动实例ImageLoader的。但它并不能帮助。

I have instantiated ImageLoader at every Activity. But it does not help.

推荐答案

实用信息部分介绍UIL如何downscales原始图像和使用哪些参数吧。

Useful Info section describes how UIL downscales original image and what parameters are used for it.

因此​​,我建议您设置安卓了maxWidth 安卓了maxHeight 参数为您的ImageView以节省内存。

So I recommend you to set android:maxWidth and android:maxHeight parameters for your ImageView to save memory.

这篇关于通用图像装载机的Andr​​oid:更改布局属性导致的OutOfMemoryError的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆