1,空指针判断,这个是常见的问题也是不容易发觉的问题。
例如:Message msg = getMyHandle().obtainMessage(); 这里的getMyHandle()就可能会返回一个空的handle从而造成空指针bug.尽量不要这样写,定义一个临时或者局部变量来判断一下是否返回null就不会空指针了。
2,资源使用完后释放
Cursor、File、数据流等资源都要手动close了,不能仅仅置为null。否则就会造成内存泄露。
3,列表类视图的getView中不使用convertView。当然这个存在也应该是粗心造成的,一般人不会搞错的,但还是写完代码检查一下。
有时候view的列表很多,内存中不可能分配很多内存,只会初始化一定量的子view,然后缓存起来下次用。convertView的意义在于滑动过程中,当一个view消失时,其对象就会作为convertView传去getview函数,而新出现的view就会通过getView函数去复用convertView。如果不使用缓存中已有的convertView,每次去实例化View,浪费时间浪费精力内存越来越大。
4,广播注册没取消
java会自动释放内存,但是类似广播注册了之后要记得手动取消注册不然就会造成内存泄露。
最后,经常跑一下findbugs,能清零就清零,这样代码潜在的问题也能尽早的发现一些。
个人学识所限,所述不一定完全对,请各位大哥批评指正补充。以后认识提高了也会回来增加一下。