From 0a12f7389efaf62aec8009fa2fc8ee8f871c86df Mon Sep 17 00:00:00 2001 From: linguokun Date: Thu, 15 Nov 2018 17:57:37 +0800 Subject: [PATCH] solve the memory leak on Android and avoid the crash on kikat when call mp.selectTrack(0); --- .../com/brentvatne/react/ReactVideoView.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/android/src/main/java/com/brentvatne/react/ReactVideoView.java b/android/src/main/java/com/brentvatne/react/ReactVideoView.java index 3ff17a1f..e06cee64 100644 --- a/android/src/main/java/com/brentvatne/react/ReactVideoView.java +++ b/android/src/main/java/com/brentvatne/react/ReactVideoView.java @@ -232,12 +232,19 @@ public class ReactVideoView extends ScalableVideoView implements mediaController.hide(); } if ( mMediaPlayer != null ) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + mMediaPlayer.setOnTimedMetaDataAvailableListener(null); + } mMediaPlayerValid = false; release(); } if (mIsFullscreen) { setFullscreen(false); } + if (mThemedReactContext != null) { + mThemedReactContext.removeLifecycleEventListener(this); + mThemedReactContext = null; + } } public void setSrc(final String uriString, final String type, final boolean isNetwork, final boolean isAsset, final ReadableMap requestHeaders) { @@ -565,7 +572,10 @@ public class ReactVideoView extends ScalableVideoView implements } // Select track (so we can use it to listen to timed meta data updates) - mp.selectTrack(0); + try{ + mp.selectTrack(0); + }catch (Throwable t){ + } } @Override @@ -601,7 +611,10 @@ public class ReactVideoView extends ScalableVideoView implements @Override public void onBufferingUpdate(MediaPlayer mp, int percent) { // Select track (so we can use it to listen to timed meta data updates) - mp.selectTrack(0); + try{ + mp.selectTrack(0); + }catch (Throwable t){ + } mVideoBufferedDuration = (int) Math.round((double) (mVideoDuration * percent) / 100.0); }