android Context 持有导致的内存泄漏
Context使用场景
为了防止Activity,Service等这样的Context泄漏于一些生命周期更长的对象,可以使用生命周期更长的ApplicationContext,但是不是所有的Context的都能替换为ApplicationContext
e.g.
在 Activity 中声明一个静态变量引用了 Activity 自身,就会造成内存泄漏:
这样的代码会导致当这个 Activity 结束的时候,sContext 仍然持有它的引用,致使 Activity 无法回收。解决办法就是在这个 Activity 的 onDestroy 时将 sContext 的值置空,或者避免使用静态变量这样的写法。
这是网上流传的一份表格: