gpt4 book ai didi

java - 如何将位图保存在内存中

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:07:14 26 4
gpt4 key购买 nike

跟进 Storing a Bitmap resource in a static variable ,似乎在 View 中存储对 android.graphics.Bitmap 的静态引用可能会泄漏对实例化它的第一个 View 的引用.在 Android 中解决这个问题的惯用方法是什么?我不想每次实例化此 View 的实例时都调用 BitmapFactory.decodeResource(resource, id),因为这将在每个 Activity 中完成(多次)。我希望这个小的 Bitmap 始终保留在内存中。那么,执行以下操作的正确方法是什么:

public class MyView extends View {
private static Bitmap star;
public MyView(Context context) {
synchronized(this) {
if (star == null) {
star = BitmapFactory.decodeResource(getResources(), R.drawable.star);
}
}
}
// ...
}

最佳答案

在您的 View 中创建一个静态清理方法,您可以从 Activity 的 onPause() 调用该方法。在该调用中,调用位图的 recycle() 并清除引用。同样,不是在构造函数中创建位图,而是在 Activity 的 onResume() 中调用初始化调用。

如果您担心可能存在重叠,因为您的 View 是跨 Activity 使用的,您可以让初始化和清理调用维护一个引用计数,以便仅在计数达到 0 时销毁位图。如果位图足够小,还可以考虑onCreate()/onDestroy()

请务必在使用前检查 View 类中的位图引用是否为空。

关于java - 如何将位图保存在内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8824004/

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