I am not able to reuse the adDisplayContainer object. I am reusing the object in changeMedia. IMA Advanced Example does not contain 'ChangeMedia' functionality so i have implemented in my fork repo.
1. Click on 'Pre-roll, linear not skippable'.
2. click on play button, Let the ad play and when the content start, seek to the end.
3. Let the ALL_ADS_COMPLETED event come in logs.
4. Click on 'CHANGE MEDIA' button.
5. Check the crash.
2021-01-13 15:45:55.921 29388-29388/com.google.ads.interactivemedia.v3.samples.videoplayerapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.google.ads.interactivemedia.v3.samples.videoplayerapp, PID: 29388
java.lang.IllegalArgumentException: A given DisplayContainer may only be used once
at com.google.ads.interactivemedia.v3.internal.arc.b(IMASDK:1)
at com.google.ads.interactivemedia.v3.internal.anh.claim(IMASDK:1)
at com.google.ads.interactivemedia.v3.internal.amw.<init>(IMASDK:13)
at com.google.ads.interactivemedia.v3.internal.amw.<init>(IMASDK:1)
at com.google.ads.interactivemedia.v3.api.ImaSdkFactory.createAdsLoader(IMASDK:6)
at com.google.ads.interactivemedia.v3.samples.videoplayerapp.VideoPlayerController.createAdsLoader(VideoPlayerController.java:263)
at com.google.ads.interactivemedia.v3.samples.videoplayerapp.VideoPlayerController.createAdDisplayContainer(VideoPlayerController.java:258)
at com.google.ads.interactivemedia.v3.samples.videoplayerapp.VideoFragment.lambda$initUi$0$VideoFragment(VideoFragment.java:117)
at com.google.ads.interactivemedia.v3.samples.videoplayerapp.-$$Lambda$VideoFragment$-aUALCOkbZ0heDSSWP4yW7ZTHS0.onClick(Unknown Source:2)
at android.view.View.performClick(View.java:6600)
at android.view.View.performClickInternal(View.java:6577)
at android.view.View.access$3100(View.java:781)
at android.view.View$PerformClick.run(View.java:25912)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6923)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:870)
2021-01-13 15:45:55.952 29388-29388/com.google.ads.interactivemedia.v3.samples.videoplayerapp I/Process: Sending signal. PID: 29388 SIG: 9
You can see the error message in the logs. This came after 'ALL_ADS_COMPLETED' event.
2021-01-13 15:45:51.223 29388-29388/com.google.ads.interactivemedia.v3.samples.videoplayerapp E/IMASDK: Error: Attempted to send bridge message after cleanup: JavaScriptMessage [command=adsManager, type=destroy, sid=d6f3eb7a-7434-4dfc-a1e2-de180b5d0a87, data=null]; javascript:adsense.mobileads.afmanotify.receiveMessage('adsManager', {"type":"destroy","sid":"d6f3eb7a-7434-4dfc-a1e2-de180b5d0a87"});