如何有效地回收碎片中的大图像(更确切地说,在 ViewPager 中)?
在 onDestroyView()中,我通过执行bitmap.recycle()来回收位图,但首先我将路径存储在 onSaveInstanceState <中 Bundle 中/ strong>即可。当没有调用onSaveInstanceState时,我读了很多关于case的问题和线索。但是, FragementStatePagerAdapter 会调用 destroyView(),因此会释放与该片段关联的资源。
如果我阻止FragmentStatePagerAdapter调用 super.destroyView(),我将保持Fragment的UI不受影响,我知道它。
我想要实现的是在片段被破坏时执行 .recycle(),在onSaveInstanceState中保存位图的路径,然后在时重用该路径来创建新的位图调用onCreateView(),然后将相同的位图放在Fragment UI的 ImageView 中。
在我将其设置为ImageView之前,我使用Google的指南有效地加载/采样位图。
任何指针都会很棒!
答案 0 :(得分:0)
以其他方式思考。创建将使用LruCache的位图管理器,并且可以访问您在寻呼机中使用的所有片段/视图。这样,你总是在内存中有最新的位图,并且有限的数量不会导致OutOfMemory异常。