提问人:amodkanthe 提问时间:6/23/2023 最后编辑:amodkanthe 更新时间:6/29/2023 访问量:702
android.net.ConnectivityManager$TooManyRequestsException
android.net.ConnectivityManager$TooManyRequestsException
问:
注意:不要将其标记为重复,因为此现有答案在网络调用时无法解决我的查询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);
}
}
答: 暂无答案
评论
ConnectivityManager
notifyIfAppIsOnline
ConnectivityManager
registerDefaultNetworkCallback
registerDefaultNetworkCallback
NetworkStateMonitor
onNetworkStateChanged