内存泄漏

  • 静态对象:
      当一个static静态对像被调用时,这个对象的生命周期和整个app的生命周期一样长。如果,我们使用的参数Context是Activity或者Service的上下文,那么当Activity被销毁的时候,我们的静态对象仍然持有着Activity的Context,就会导致Activity对象无法被释放回收,就导致了内存泄漏;
public class TestManager{
    private static TestManager sTestManager;
    //会造成内存泄漏的方法;
    public static TestManager getInstance(Context context) {
        if (sTestManager == null) {
            sTestManager = new TestManager(context);
        }
        return sTestManager;
    }
    //不会造成内存泄漏的方法;
    public static TestManager getInstanceSafe(Context context) {
        if (sTestManager == null) {
            sTestManager = new TestManager(context.getApplicationContext());                                               
        }
        return sTestManager;
    } 
}