我有多个活动。每个活动在 GridView 中显示图像。每个活动作为独立应用程序都可以正常工作。当我从另一个活动调用活动时,会出现此问题。网格视图(第二个/第三个活动)的一个项是图像视图:
<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)
我已经在每个活动中实例化了图像加载器。但这无济于事。
有用信息部分描述了UIL如何缩小原始图像以及为其使用哪些参数。
因此,我建议您为 ImageView 设置android:maxWidth
和android:maxHeight
参数以节省内存。