android - 通用图像加载器 Android : Changing Layout properties causes OutOfMemoryError

标签 android android-layout universal-image-loader

我有多项 Activity 。每个 Activity 都在 GridView 中显示图像。每个 Activity 作为独立应用程序都可以正常工作。当我从另一个 Activity 调用一项 Activity 时,就会出现问题。 GridView(第二/第三 Activity )的一项是 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 为单位设置宽度、高度时,效果很好。就像:

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

对我来说效果很好。

但是当我设置高度/宽度:wrap_content/fill_parent时,它出现内存不足异常:

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)

我在每个 Activity 中都实例化了 ImageLoader。但这没有帮助。

最佳答案

Useful Info section描述了 UIL 如何缩小原始图像以及使用哪些参数。

因此我建议您为 ImageView 设置 android:maxWidthandroid:maxHeight 参数以节省内存。

关于android - 通用图像加载器 Android : Changing Layout properties causes OutOfMemoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13426959/

相关文章:

android - 自动调整android中gridview中单元格的大小

android - 模式正则表达式忽略引号和单引号的反斜杠

android - 如何在操作栏中隐藏菜单项?

java - 缓存可缩放网页图像

Android:请求权限时传递参数 (Android 6)

java - 如何使用安卓:layout_weight consistently for all screensizes

android - 有没有办法在其他类中获取 TextView

android - 为什么浏览应用程序屏幕上没有显示正确的应用程序名称?

android - 如何通过http将图像下载到android缓存并稍后显示?

java - ImageLoader-java.lang.OutOfMemoryError