通用图像装载机的Android:更改布局属性导致的OutOfMemoryError [英] Universal Image Loader Android : Changing Layout properties causes 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.
这篇关于通用图像装载机的Android:更改布局属性导致的OutOfMemoryError的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!