From 10db7a9c459670cd622fccb3a6b5faea53bf8a09 Mon Sep 17 00:00:00 2001 From: ibaker Date: Fri, 1 May 2020 12:37:29 +0100 Subject: [PATCH] Ensure we destroy WebViews when we detach them from SubtitleView PiperOrigin-RevId: 309389731 --- .../google/android/exoplayer2/ui/SubtitleView.java | 3 +++ .../google/android/exoplayer2/ui/SubtitleWebView.java | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/SubtitleView.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/SubtitleView.java index ee9f3f9e1f..23a1add0fc 100644 --- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/SubtitleView.java +++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/SubtitleView.java @@ -143,6 +143,9 @@ public final class SubtitleView extends FrameLayout implements TextOutput { private void setView(T view) { removeView(innerSubtitleView); + if (innerSubtitleView instanceof SubtitleWebView) { + ((SubtitleWebView) innerSubtitleView).destroy(); + } innerSubtitleView = view; output = view; addView(view); diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/SubtitleWebView.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/SubtitleWebView.java index d56249a7af..480d057212 100644 --- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/SubtitleWebView.java +++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/SubtitleWebView.java @@ -174,6 +174,17 @@ import java.util.List; updateWebView(); } + /** + * Cleans up internal state, including calling {@link WebView#destroy()} on the delegate view. + * + *

This method may only be called after this view has been removed from the view system. No + * other methods may be called on this view after destroy. + */ + public void destroy() { + cues.clear(); + webView.destroy(); + } + private void updateWebView() { StringBuilder html = new StringBuilder(); html.append(