Getting TooManyRequestsException while working with YoutubePlayer library

94 Views Asked by At

i have a movie app in which you can play videos in YoutubePlayer library. This app uses Jetpack compose for ui but when i click on a video it goes to the specified Screen with the correct videoKey and play the video without problem but when i try to play another video it throws this exception(it does not happen the first time or sometimes second time) :

FATAL EXCEPTION: main
                                                                                                    Process: com.farzin.imdb, PID: 17832
                                                                                                    android.net.ConnectivityManager$TooManyRequestsException
                                                                                                        at android.net.ConnectivityManager.convertServiceException(ConnectivityManager.java:4032)
                                                                                                        at android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:4221)
                                                                                                        at android.net.ConnectivityManager.registerDefaultNetworkCallbackForUid(ConnectivityManager.java:4750)
                                                                                                        at android.net.ConnectivityManager.registerDefaultNetworkCallback(ConnectivityManager.java:4717)
                                                                                                        at android.net.ConnectivityManager.registerDefaultNetworkCallback(ConnectivityManager.java:4691)
                                                                                                        at com.pierfrancescosoffritti.androidyoutubeplayer.core.player.utils.NetworkObserver.doObserveNetwork(NetworkObserver.kt:76)
                                                                                                        at com.pierfrancescosoffritti.androidyoutubeplayer.core.player.utils.NetworkObserver.observeNetwork(NetworkObserver.kt:31)
                                                                                                        at com.pierfrancescosoffritti.androidyoutubeplayer.core.player.views.LegacyYouTubePlayerView.initialize(LegacyYouTubePlayerView.kt:102)
                                                                                                        at com.pierfrancescosoffritti.androidyoutubeplayer.core.player.views.YouTubePlayerView.<init>(YouTubePlayerView.kt:90)
                                                                                                        at com.pierfrancescosoffritti.androidyoutubeplayer.core.player.views.YouTubePlayerView.<init>(YouTubePlayerView.kt:33)
                                                                                                        at com.farzin.imdb.ui.screens.play_video.VideoPlayerScreenKt$VideoPlayerScreen$1$1.invoke(VideoPlayerScreen.kt:28)
                                                                                                        at com.farzin.imdb.ui.screens.play_video.VideoPlayerScreenKt$VideoPlayerScreen$1$1.invoke(VideoPlayerScreen.kt:27)
                                                                                                        at androidx.compose.ui.viewinterop.ViewFactoryHolder.<init>(AndroidView.android.kt:337)
                                                                                                        at androidx.compose.ui.viewinterop.AndroidView_androidKt$createAndroidViewNodeFactory$1.invoke(AndroidView.android.kt:271)
                                                                                                        at androidx.compose.ui.viewinterop.AndroidView_androidKt$createAndroidViewNodeFactory$1.invoke(AndroidView.android.kt:270)
                                                                                                        at androidx.compose.ui.viewinterop.AndroidView_androidKt$AndroidView$$inlined$ComposeNode$1.invoke(Composables.kt:254)
                                                                                                        at androidx.compose.runtime.ComposerImpl$createNode$2.invoke(Composer.kt:1610)
                                                                                                        at androidx.compose.runtime.ComposerImpl$createNode$2.invoke(Composer.kt:1608)
                                                                                                        at androidx.compose.runtime.ComposerImpl$recordInsert$2.invoke(Composer.kt:3546)
                                                                                                        at androidx.compose.runtime.ComposerImpl$recordInsert$2.invoke(Composer.kt:3543)
                                                                                                        at androidx.compose.runtime.CompositionImpl.applyChangesInLocked(Composition.kt:818)
                                                                                                        at androidx.compose.runtime.CompositionImpl.applyChanges(Composition.kt:849)
                                                                                                        at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:625)
                                                                                                        at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:537)
                                                                                                        at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:41)
                                                                                                        at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.android.kt:109)
                                                                                                        at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.android.kt:41)
                                                                                                        at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:69)
                                                                                                        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1229)
                                                                                                        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1239)
                                                                                                        at android.view.Choreographer.doCallbacks(Choreographer.java:899)
                                                                                                        at android.view.Choreographer.doFrame(Choreographer.java:827)
                                                                                                        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1214)
                                                                                                        at android.os.Handler.handleCallback(Handler.java:942)
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                                        at android.os.Looper.loopOnce(Looper.java:201)
                                                                                                        at android.os.Looper.loop(Looper.java:288)
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:7872)
                                                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)

here is where i navigate to VideoScreen :

LazyRow(
                        modifier = Modifier
                            .fillMaxWidth()
                    ) {
                        items(videosList) {
                            VideoItem(
                                poster = poster,
                                title = it.name ?: "",
                                type = it.type ?: "",
                                onClick = {
                                    navController.navigate(Screens.Video.route+"?key=${it.key}")

                                }
                            )
                        }


                    }

here is the VideoScreen composable :

@Composable
fun VideoPlayerScreen(key: String, navController: NavController) {

    val ctx = LocalContext.current
    val coroutine = rememberCoroutineScope()
    val view = YouTubePlayerView(ctx)

    AndroidView(factory = {
        view.addYouTubePlayerListener(
            object : AbstractYouTubePlayerListener() {
                override fun onReady(youTubePlayer: YouTubePlayer) {
                    super.onReady(youTubePlayer)

                        youTubePlayer.loadVideo(key, 0f)


                }
            }
        )
        view
    })

    BackHandler {
        view.release()

        navController.popBackStack()
    }

}

as you can see i have tried adding view.release() when getting out of the screen but I still get the same error(I think this error is because the previous session is still open but I'm not sure). I would appreciate any help.

0

There are 0 best solutions below