0

如何有效地回收 Fragments 中的大图像(更准确地说,在ViewPager中)?

onDestroyView()中,我通过执行 bitmap.recycle() 来回收位图,但首先我将路径存储在onSaveInstanceState中的Bundle中。我阅读了数千个关于未调用 onSaveInstanceState 情况的问题和线程。但是,FragementStatePagerAdapter调用destroyView ()因此它会释放与片段关联的资源。

如果我阻止 FragmentStatePagerAdapter 调用super.destroyView()我将保持 Fragment 的 UI 不变,我知道这一点。

我想要实现的是在片段被销毁时执行.recycle() ,在 onSaveInstanceState 中保存位图的路径,然后在调用onCreateView()时重用该路径来创建新位图,然后将相同的位图放入片段 UI 的ImageView

在将位图设置为 ImageView 之前,我使用 Google 的指南来有效地加载/采样位图。

任何指针都会很棒!

4

1 回答 1

0

换个方式想。创建将使用 LruCache 的位图管理器,并且可以访问您在寻呼机中使用的所有片段/视图。这样,您始终在内存中拥有最新的位图,并且数量有限,不会出现 OutOfMemory 异常。

于 2012-11-15T01:09:06.833 回答