1.回收Bitmap对象
泄露原因:大部分时候,我们只要把图片放在/res/drawable-hdpi目录下,就可以在程序中通过该图片对应的资源ID来获取封装该图片的Drawable对象。但由于手机系统的内存比较小,如果系统不停的去解析、创建Bitmap对象,可能由于前面创建Bitmap所占用的内存还没有回收,而导致程序运行时引发OutOfMemory 错误。
处理方法:Android为Bitmap提供了两个方法来判断它是否已回收,以及强制Bitmap回收自己。
boolean is Recycled():返回该Bitmap对象是否已被回收。
void recycle():强制一个Bitmap对象立即回收自己。
除此之外,如果Android应用需要访问其他存储路径(比如SD卡中)里的图片,都需要借助于BitmapFactory来解析、创建Bitmap对象。
2.自定义的View中,如果有线程或者动画,需要及时停止。
如果有线程或者动画需要停止时,那么onDetachedFormWindow 是一个很好的时机。当包含此View的Activity退出或者当前的View被remove时,View的onDetachedFromWindow方法会被调用,和此方法对应的是onAttachedToWindow,当包含此View的Activity启动时,view 的onAttachedToWindow方法会被调用。同时,当View变得不可见时,我们也需要停止线程或动画,如果不及时处理这种问题,有可能会造成内存泄漏。