You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 11下ConnectivityManager$TooManyRequestsException问题求助

关于Android 11上ConnectivityManager$TooManyRequestsException的问题

注意:请勿将此标记为重复问题,现有回答未解决我的疑问

更新(6月28日周三):发现该问题仅出现在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调用因网络不可用失败时,注销回调的时机为用户重新联网或Activity销毁时,相关代码如下:

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);
    }
 }

内容的提问来源于stack exchange,提问作者amodkanthe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:23:08