授之以鱼不如授之以渔.
在项目中经历了很多内存泄漏之后终于程序崩溃了.
最开始写代码的时候没有注意到Cursor的close(),特别是在一些业务return的时候很容易忘记.后来越写越多,泄漏的愈来愈多之后就崩不住了.
检查泄漏方法如下:
private static boolean devMode = true; //也可以用(BuildConfig.DEBUG) {...}
@Override
protected void onCreate(Bundle savedInstanceState) {
if (devMode)
{
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
}
super.onCreate(savedInstanceState);
...
...
测试只要你程序跑到了的地方,都能检测出来,导致程序崩溃,看日志就能找到具体的泄漏代码.