我一直在使用一个工具leakcanary,用来检查应用程序中的内存泄漏问题。似乎我的WebViewActivity每次都会泄漏。
我创建了一个简单的应用程序来测试这些泄漏问题。我使用xml布局文件中的Activity上下文启动带有WebView的Activity。关闭Js,并且保持默认设置,除了一个简单的webViewClient,它将重定向限制在WebView内部。但是每次都会泄漏。
我已经进行了大量研究,唯一防止此类问题的方法是使用另一个进程启动WebViewActivity并在onDestroy()中销毁它。但是这种方法也存在自己的缺点。
泄漏问题每次在所有运行5.0+系统的设备上都会发生,在4.3及以下版本中还未检查。
泄漏信息如下:
我创建了一个简单的应用程序来测试这些泄漏问题。我使用xml布局文件中的Activity上下文启动带有WebView的Activity。关闭Js,并且保持默认设置,除了一个简单的webViewClient,它将重定向限制在WebView内部。但是每次都会泄漏。
我已经进行了大量研究,唯一防止此类问题的方法是使用另一个进程启动WebViewActivity并在onDestroy()中销毁它。但是这种方法也存在自己的缺点。
泄漏问题每次在所有运行5.0+系统的设备上都会发生,在4.3及以下版本中还未检查。
泄漏信息如下:
希望任何人都能提供帮助。谢谢!In com.example.webviewmemoryleaktest:1.0:1. * com.example.webviewmemoryleaktest.WebViewActivity has leaked: * GC ROOT android.os.ResultReceiver$MyResultReceiver.this$0 * references org.chromium.content.browser.ContentViewCore$2$1.this$1 (anonymous class extends android.os.ResultReceiver) * references org.chromium.content.browser.ContentViewCore$2.this$0 * references org.chromium.content.browser.ContentViewCore.mContext * references com.android.webview.chromium.ResourcesContextWrapperFactory$WebViewContextWrapper.mBase * leaks com.example.webviewmemoryleaktest.WebViewActivity instance
- Reference Key: 9a0346cf-6ad9-4b07-9329-a975d8fa3cbe
- Device: LGE google Nexus 4 occam
- Android Version: 5.1 API: 22
- Durations: watch=5139ms, gc=188ms, heap dump=2822ms, analysis=30918ms
WebView.destroy()
doc? - Mikhail Naganov