android.net.ConnectivityManager$TooManyRequestsException

android.net.ConnectivityManager$TooManyRequestsException

提问人:amodkanthe 提问时间:6/23/2023 最后编辑:amodkanthe 更新时间:6/29/2023 访问量:702

问:

注意:不要将其标记为重复,因为此现有答案在网络调用时无法解决我的查询android.net.ConnectivityManager$TooManyRequestsException。

更新 星期三 28 6 月 : 发现这仅在 Android 11 设备上发生。

我添加了一个回调来通知设备是否连接到互联网,代码在 firebase 中给我以下异常,我从未在应用程序上观察到此问题,以下是异常日志

Exception android.net.ConnectivityManager$TooManyRequestsException:
at android.net.ConnectivityManager.convertServiceException 
(ConnectivityManager.java:3698)
at android.net.ConnectivityManager.sendRequestForNetwork 
(ConnectivityManager.java:3886)
at android.net.ConnectivityManager.registerDefaultNetworkCallback 
(ConnectivityManager.java:4378)
at android.net.ConnectivityManager.registerDefaultNetworkCallback 
(ConnectivityManager.java:4345)
at com.myapp.android.core.network.PieConnectionStatusWatcher.registerCallback 
(SourceFile:38)
at com.myapp.android.core.network.NetworkStateMonitor.addCallback (SourceFile:62)
at com.myapp.android.core.mvvm.repository.MyDataRepository.notifyIfAppIsOnline 
(SourceFile:161)
at com.myapp.android.banner.viewmodel.MyViewModel.startReloadIfAppIsOnlineAgain 
(SourceFile:287)
 at com.myapp.android.viewmodel.MyViewModel.onAdLoadingFailed (SourceFile:262)
 at com.myapp.android.core.mvvm.repository.MyDataRepository.lambda$loadAd$2
 at android.os.Handler.handleCallback (Handler.java:938)
 at android.os.Handler.dispatchMessage (Handler.java:99)
 at android.os.Looper.loop (Looper.java:257)
 at android.app.ActivityThread.main (ActivityThread.java:8390)
 at java.lang.reflect.Method.invoke
 at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run 
 (RuntimeInit.java:603)
 at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:947)

我确保添加和删除回调,如下所示的几个解决方案

connectivityManager = requireContext().getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
connectivityManager?.registerDefaultNetworkCallback(connectionCallback)

注销:

connectivityManager?.unregisterNetworkCallback(connectionCallback)

我仍然能够看到此崩溃,任何原因如何解决这个问题?

当 api 调用因网络不可用而失败时添加网络回调的条件,以及在用户重新联机或活动被破坏时取消注册调用的情况。

 public Object notifyIfAppIsOnline(Runnable onAppIsOnline) {
    NetworkStateMonitor.Callback connectionStateListener = new NetworkStateMonitor.Callback() {
        @Override
        public void onNetworkStateChanged(boolean isOnline) {
            if (isOnline) {
                networkStateMonitor.removeCallback(this);
                onAppIsOnline.run();
            }
        }
    };

    networkStateMonitor.addCallback(connectionStateListener);

    return connectionStateListener;
}

public void onDestroy() {
    if (appIsOnlineNotification != null) {
        myRepository.cancelAppOnlineNotification(appIsOnlineNotification);
    }
 }
人造人 Firebase 例外 Android网络 android-connectivitymanager

评论

1赞 Always Learning 6/27/2023
您能否包括在什么条件下注册和注销回调?顺便说一句,跟踪特定 PID 的回调次数。因此,您可能正确地注销了此回调,但未正确注销应用程序中的其他回调,这可能是您遇到此错误的一个潜在原因。ConnectivityManager
0赞 Rosário Pereira Fernandes 6/27/2023
你能分享一下你的功能的全部内容吗?notifyIfAppIsOnline
0赞 amodkanthe 6/29/2023
@AlwaysLearning更新的问题,请查看
0赞 amodkanthe 6/29/2023
@Rosário佩雷拉·费尔南德斯(Pereira Fernandes)更新的问题,请查看
0赞 Always Learning 6/29/2023
实际上,我希望你能展示你的代码,它使用API和.我需要看看这些是如何被用于更好地提供帮助的。另外,是自定义类吗?如果是这样,是什么触发了它?ConnectivityManagerregisterDefaultNetworkCallbackregisterDefaultNetworkCallbackNetworkStateMonitoronNetworkStateChanged

答: 暂无答案