1,系统输入法引起的内存泄漏。
使用LeakCanary工具定位内存问题时候,发现系统输入法的内存泄漏,网上也有挺多解决方案,如下这篇算是比较好的几种方案的集合。
在项目中,通过阅读源码,最终采用了一种文章没提到的方案,暂时未发现有什么问题,纪录下,方便后续查阅。
在 activity 的 onDestroy 方法中加入如下代码即可。
二,其他引起内存泄漏的
1、Handler持有的引用最好使用弱引用,在Activity被释放的时候要记得清空Message,取消Handler对象的Runnable;
2、非静态内部类、非静态匿名内部类会自动持有外部类的引用,为避免内存泄露,可以考虑把内部类声明为静态的;
3、对于生命周期比Activity长的对象,要避免直接引用Activity的context,可以考虑使用ApplicationContext;
4、广播接收器、EventBus等的使用过程中,注册/反注册应该成对使用;
5、不再使用的资源对象Cursor、File、Bitmap等要记住正确关闭;
6、集合里面的东西、有加入就应该对应有相应的删除。
详细请参考:http://www.cnblogs.com/andashu/p/6440944.html