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

关于Android ConnectivityService与TooManyRequestsException的问题求助

关于ConnectivityManager$TooManyRequestsException的排查求助

崩溃堆栈信息

Caused by: android.net.ConnectivityManager$TooManyRequestsException
at android.net.ConnectivityManager.convertServiceException(ConnectivityManager.java:3510)
at android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:3714)
at android.net.ConnectivityManager.registerNetworkCallback(ConnectivityManager.java:4035)
at android.net.ConnectivityManager.registerNetworkCallback(ConnectivityManager.java:4016)
at com.tonyodev.fetch2.provider.NetworkInfoProvider.<init>(NetworkInfoProvider.kt:82)
at com.tonyodev.fetch2.fetch.e$b.<init>(FetchModulesBuilder.kt:103)
at com.tonyodev.fetch2.fetch.e.a(FetchModulesBuilder.kt:199)

已完成的排查

  • 确认代码中fetch2是单例,排除其导致该崩溃的可能
  • 反射检查ConnectivityManager的静态变量sCallbacks,确认应用中最多仅注册15个回调,因此崩溃并非由回调过多导致
  • 定位到ConnectivityService中抛出异常的核心代码:
private void enforceRequestCountLimit() {
    synchronized (mUidToNetworkRequestCount) {
        int networkRequests = mUidToNetworkRequestCount.get(mUid, 0) + 1;
        if (networkRequests >= MAX_NETWORK_REQUESTS_PER_UID) {
            throw new ServiceSpecificException(
                    ConnectivityManager.Errors.TOO_MANY_REQUESTS);
        }
        mUidToNetworkRequestCount.put(mUid, networkRequests);
    }
}

该方法属于ConnectivityService的内部类NetworkRequestInfo,每次创建NetworkRequestInfo对象时计数会加1,达到阈值时触发异常。

求助问题

从代码逻辑推测,除ConnectivityManager.registerNetworkCallback外,还有其他操作会创建NetworkRequestInfo对象,但目前不清楚具体是哪些操作,希望得到相关信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:32:40