【问题标题】:How to unload images from memory in an Android app如何在 Android 应用程序中从内存中卸载图像
【发布时间】:2012-12-24 21:07:04
【问题描述】:
在 Android 应用程序中,(对其他一些问题的回答表明)图像资源在首次使用时被加载到内存中,例如当我打电话给ImageView.setImageResource(myResId)。
如何强制从内存中卸载图像资源,以控制我的内存占用?
我有一个应用程序,一个带有 viewpager 的活动:资源中有许多图像,每个视图页面一个图像。创建页面时加载图像,我想在用户翻转到另一个页面时将其卸载。如果用户回来,图像可以重新加载。
【问题讨论】:
标签:
android
android-resources
android-memory
【解决方案1】:
您不想专门从内存中卸载图像。最好的方法是在完成对象后调用 recycle(),并持有对该对象的弱引用。为此,您可以执行以下操作:
ImageView imageView = (ImageView) findViewById(R.id.imageview);
WeakReference<ImageView> imageViewRef = new WeakReference<ImageView>(imageView);
只要你想访问图像,你可以使用:
imageViewRef.get()
这样,当应用程序需要更多内存时,它可以从内存中删除图像,因为它没有硬引用。