gpt4 book ai didi

android - ImageView 使用的内存永远不会释放

转载 作者:行者123 更新时间:2023-11-30 02:25:53 24 4
gpt4 key购买 nike

在构建一个加载内容 View 布局的对话框时 (setContentView)我注意到一件奇怪的事:加载的布局有一个带有此对话框背景的 ImageView:

<ImageView android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/preloader_bg_small"
android:id="@+id/background_img"
/>

每次对话框显示(在不同的 Activity 中)它会耗尽内存(30mb)图像本身是从本地资源加载的 290k jpg 并且永远不会被释放

我尝试以编程方式加载图像:

((ImageView)dialog.findViewById(R.id.background_img)).setImageResource(R.drawable.preloader_bg_small);

然后在关闭对话框之前卸载它

 ((ImageView)dialog.findViewById(R.id.background_img)).setImageDrawable(null);

但是只有在 Activity 关闭后才会释放内存,而不是立即释放。

有没有办法释放内存?为什么 ImageView 会这样?

感谢您的帮助!

最佳答案

尽管通过以下方式解决仍然很奇怪:

通过设置drawable而不是直接设置resource来加载图片:

((ImageView)dialog.findViewById(R.id.background_img)).setImageDrawable(getResources().getDrawable(R.drawable.preloader_bg_small));

并通过将 drawable 设置为 null 从内存中释放它

ImageView background_image = ((ImageView) dialog.findViewById(R.id.background_img));
background_image.setImageDrawable(null);

关于android - ImageView 使用的内存永远不会释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27924092/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com