1. 程式人生 > >Android 防止記憶體洩漏的幾個注意點

Android 防止記憶體洩漏的幾個注意點

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)資源未關閉導致的記憶體洩漏等……