アプリケーションのメモリ リークを見つけるために、 leakcanaryツールを使用しています。私の WebViewActivity は毎回リークしているようです。
漏れをテストするための簡単なアプリケーションを作成しました。xml レイアウト ファイル内の WebView でアクティビティを開始し、アクティビティ コンテキストでインフレートします。Js オフ。すべてのデフォルトは、WebView 内でリダイレクトを維持する単純な webViewClient を想定しています。毎回漏れます。
これを防ぐ唯一の方法は、別のプロセスで WebViewActivity を開始し、onDestroy 内で強制終了することです。しかし、この方法には独自の欠点があります。
リークは、5.0 以降を実行しているすべてのデバイスで毎回発生します。4.3 以下ではチェックしていません。
リーク情報を以下に貼り付けます。
com.example.webviewmemoryleaktest:1.0:1 で。* com.example.webviewmemoryleaktest.WebViewActivity がリークしました: * GC ROOT android.os.ResultReceiver$MyResultReceiver.this$0 * org.chromium.content.browser.ContentViewCore$2$1.this$1 を参照します (匿名クラスは android.os.ResultReceiver を拡張します) * org.chromium.content.browser.ContentViewCore$2.this$0 を参照 * org.chromium.content.browser.ContentViewCore.mContext を参照 * com.android.webview.chromium.ResourcesContextWrapperFactory$WebViewContextWrapper.mBase を参照 * com.example.webviewmemoryleaktest をリーク.WebViewActivity インスタンス
- 参照キー: 9a0346cf-6ad9-4b07-9329-a975d8fa3cbe
- デバイス: LGE Google Nexus 4 occam
- Android バージョン: 5.1 API: 22
- 所要時間: watch=5139ms、gc=188ms、heap dump=2822ms、analysis=30918ms
誰かが助けてくれれば感謝します。ありがとう!