From 008d38d83298a4a15fdf528ea67ce4073767a668 Mon Sep 17 00:00:00 2001 From: andrewlewis Date: Mon, 27 Apr 2020 10:28:41 +0100 Subject: [PATCH] Reattach player to ads loader on resume When pausing and resuming a playback using an AdsLoader it is necessary to call setPlayer again. This fixes an issue where playback was stuck in the buffering state when pausing and resuming an ad playback in the demo app. PiperOrigin-RevId: 308582143 --- .../android/exoplayer2/demo/PlayerActivity.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java b/demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java index 1c24879457..47d7966b18 100644 --- a/demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java +++ b/demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java @@ -448,7 +448,7 @@ public class PlayerActivity extends AppCompatActivity * otherwise. */ @Nullable - private AdsLoader createAdsLoader(Uri adTagUri) { + private AdsLoader maybeCreateAdsLoader(Uri adTagUri) { // Load the extension source using reflection so the demo app doesn't have to depend on it. try { Class loaderClass = Class.forName("com.google.android.exoplayer2.ext.ima.ImaAdsLoader"); @@ -593,14 +593,14 @@ public class PlayerActivity extends AppCompatActivity releaseAdsLoader(); loadedAdTagUri = adTagUri; } + // The ads loader is reused for multiple playbacks, so that ad playback can resume. if (adsLoader == null) { - // The ads loader is reused for multiple playbacks, so that ad playback can resume. - adsLoader = createAdsLoader(adTagUri); - if (adsLoader != null) { - adsLoader.setPlayer(player); - } else { - showToast(R.string.ima_not_loaded); - } + adsLoader = maybeCreateAdsLoader(adTagUri); + } + if (adsLoader != null) { + adsLoader.setPlayer(player); + } else { + showToast(R.string.ima_not_loaded); } return adsLoader; }