在尝试实现Drawables的小型内存缓存时,我了解到为了避免在关闭活动后出现内存泄漏,我需要取消绑定那些Drawable:将它们的回调设置为null.
因为在每个活动中维护缓存的Drawables需要额外的代码,所以我试图在之后立即取消绑定它们setImageDrawable(drawable),到目前为止我没有看到任何后果.
这是来自MyImageView类(extends ImageView)的代码:
setImageDrawable(drawable);
d.setCallback(null);
Run Code Online (Sandbox Code Playgroud)
在调试器中,我可以清楚地看到,在第一行回调为null之前,在第一行之后将其设置为此imageView,之后我再次将其设置为null.它通常在那之后显示..
setCallback (Drawable.Callback cb)各州文件:
将Drawable.Callback对象绑定到此Drawable.对于想要支持动画drawable的客户端是必需的.
因为我不需要动画drawable,所以我不明白为什么我不应该这样做但是让我感到困扰的是,在几个博客中关于Android中关于drawables的内存泄漏这只是在活动完成后才完成的.问题是,为什么绑定时总会自动设置回调ImageView?
是否存在一些边界条件,其中回调设置为null的drawable将导致问题?没有显示或NPE?