gpt4 book ai didi

android - 多个屏幕更改时的位图 OutOfMemory

转载 作者:行者123 更新时间:2023-11-29 02:16:26 28 4
gpt4 key购买 nike

我通过允许用户选择要显示的图片从 SD 卡加载位图。创建位图后,我在 ImageView 中设置位图:

mBitmap = Bitmap.createBitmap(Media.getBitmap(this.getContentResolver(), mPictureUri));
mImageView.setImageBitmap(mBitmap);

这很好用。但是,如果我将屏幕方向从纵向更改为横向,然后再返回几次,我总是会遇到 OutOfMemory 异常。

在 onPause 中,我调用了 mBitmap.recycle(),然后在 onResume 中,我再次调用上面的代码来创建位图并设置 ImageView。由于我每次都在回收图像,我怎么会出现 OutOfMemory 错误?

无论如何,由于失败,我发现了一个帖子说尝试使用 onRetainNonConfigurationInstance() 和 getLastNonConfigurationInstance()。见帖子 Save cache when rotate device .我更改了我的代码以这种方式工作,但仍然出现错误。更改代码,我在 onCreate() 中调用了 getLastNonConfigurationInstance(),并删除了 onPause 和 onResume 中的所有代码。

谁能告诉我问题出在哪里,或者提供一些方法来简单地加载图像,然后能够在不耗尽内存的情况下暂停和恢复 Activity?谢谢。

最佳答案

尝试减小位图的大小。它有多大?使用 BitmapFactory.options。也不要使用“这个实例”。请参阅有关内存泄漏的文章: http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html

关于android - 多个屏幕更改时的位图 OutOfMemory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3446201/

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