1

在 Android 应用程序中,(对其他一些问题的回答表明)图像资源在首次使用时被加载到内存中,例如当我调用ImageView.setImageResource(myResId).

如何强制从内存中卸载图像资源,以控制我的内存占用?

我有一个应用程序,一个带有 viewpager 的活动:资源中有许多图像,每个视图页面一个图像。创建页面时加载图像,我想在用户翻转到另一个页面时将其卸载。如果用户回来,图像可以再次加载。

4

1 回答 1

0

您不想专门从内存中卸载图像。最好的方法是在完成对象后调用 recycle(),并持有对该对象的弱引用。为此,您可以执行以下操作:

ImageView imageView = (ImageView) findViewById(R.id.imageview);
WeakReference<ImageView> imageViewRef = new WeakReference<ImageView>(imageView);

每当您想访问图像时,都可以使用:

imageViewRef.get()

这样,当应用程序需要更多内存时,它可以从内存中删除图像,因为它没有硬引用。

于 2012-12-24T23:20:55.493 回答