1)getSystemService的时候,应避免使用activity的context,而是使用application的context
2)单例模式的context,应使用context.getApplicationContext来代替,如下:
public class AppSettings {
private Context mAppContext;
private static AppSettings sInstance = new AppSettings();
//some other codes
public static AppSettings getInstance() {
return sInstance;
}
public final void setup(Context context) {
mAppContext = context.getApplicationContext(); //这里应使用context.getApplicationContext()方法而不是直接赋值context
}
}
3)忘记反注册监听器。我们经常会在应用中注册一些listener、observer等,这些都是作为观察者模式来实现的,那么在activity的oncreate方法中注册了监听器,就应该在ondestory方法中反注册监听器(解注册)
4)非静态内部类、匿名内部类会隐式持有外部类的实例引用,导致泄漏。解决方法为:
1》使用实例变量存储匿名内部类的实例,在ondestory中反注册
2》如果registerListener方法可以修改,可以使用弱引用来解决
5)资源未关闭导致的内存泄漏等……