原因:
Android默认Bitmap对象是不会帮你回收的,所以当你用自定义View的时候很容易出现OOM,尤其是在Listview里用自定义View的时候,我就遇到过,有个人重写了checkbox实现了IOS的开关控件,结果当我放入listview的时候来回滑动了几次就OOM了。
解决方法:
仔细考虑了下感觉View应该有销毁的时候的回调函数,所以看了下文档,发现了这个方法
void com.finals.themeemui3.
RoundCycleView.onDetachedFromWindow()
@
Override
This is called when the view is detached from a window. At this point it no longer has a surface for drawing.
Overrides:
onDetachedFromWindow() in
ViewGroup
这个是当view从窗体移除的时候的回调函数,移除以后就不再绘制了,所以感觉这个方法最适合做资源回收。你可以在这里进行资源的释放,handler的removeCallbacks,以及
AnimationDrawable的stop。