我需要帮助来了解泄漏金丝雀检测到的泄漏

时间:2017-05-07 14:32:46

标签: android memory-leaks leakcanary

我需要帮助来追踪泄漏金丝雀检测到的泄漏

我已将此class作为库的一部分,将Views保存为图像,leak canary检测到泄漏,我不确定如何修复或了解。在我的演示应用程序中检测到泄漏,该应用程序包含带有保存按钮的1 Activity。单击按钮并退出应用程序时,检测发生

enter image description here

1 个答案:

答案 0 :(得分:0)

变化:

private class AsyncSaveBitmap extends AsyncTask<Void, Void, Void> implements MediaScannerConnection.OnScanCompletedListener

为:

static private class AsyncSaveBitmap extends AsyncTask<Void, Void, Void> implements MediaScannerConnection.OnScanCompletedListener

(即添加static关键字)

这需要对onScanCompleted()实施进行一些后续更改,这些更改目前依赖AsyncSaveBitmap不是static的事实,调用您的活动的responseListener()方法。

目前,只要您的任务仍在运行,您的活动就会泄露,因为:

  • 您将AsyncSaveBitmap传递给MediaScannerConnection.scanFile()作为回调对象

  • 回调对象将由MediaScannerConnection代码保留,直至扫描完成

  • AsyncSaveBitmap类不是static,因此它包含一个隐式引用,返回外部Java类,在本例中是您的活动