HarmonyOS 鸿蒙Next手机上出现TooManyRequestsException异常

发布于 1周前 作者 phonegap100 来自 鸿蒙OS

HarmonyOS 鸿蒙Next手机上出现TooManyRequestsException异常

我们的APP线上出现大量的TooManyRequestsException异常,都是鸿蒙系统,例如:HarmonyOS 3.0.0  华为 P40 Pro(5G版)

经排查这个异常是往Android系统类 ConnectivityManager 中注册callback的时候抛出来的,确认过代码并没有大量注册callback的bug。

为了定位问题,在出现这个异常的时候,我们通过反射获取所有已注册的callback上报,但是出现了反射异常提示找不到相关变量,反射代码

val builder = StringBuilder()

try { val connectivityManager = PorosApplication.instance.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager

val field = connectivityManager::class.java.getDeclaredField("sCallbacks")
field.isAccessible = true

val callbacks = field.get(null)

val map: HashMap<NetworkRequest, ConnectivityManager.NetworkCallback> =
    callbacks as HashMap<NetworkRequest, ConnectivityManager.NetworkCallback>
builder.append("callback size: ").append(map.values.size).append("\n")
map.values.forEachIndexed { index, networkCallback ->
    builder.append(index).append(": ").append(networkCallback::class.java.name)
        .append("\n")
}

} catch (e: Exception) { builder.append(“exception: “).append(e).append(”\n”) }

上面代码反射出现异常:

java.lang.NoSuchFieldException: No field sCallbacks in class Landroid/net/ConnectivityManager; (declaration of ‘android.net.ConnectivityManager’ appears in /apex/com.android.tethering/javalib/framework-connectivity.jar)
end

以上反射代码,使用云真机上大量鸿蒙系统手机验证过时能正常反射出来的,就是出现TooManyRequestsException异常的鸿蒙系统上反射不出来

12 回复

是否有bugfix?

版主只给了一个链接地址,然而并未解决开发者的问题。出现此问题的手机都是华为手机,也有不少开发者遇到,每个人都提一个工单反馈,那就没必要发帖讨论了。况且提工单还没有准确对应的分类。

最后有官方解释吗

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

我们的app也遇到这个异常,官方有解决方吗???

Caused by: android.net.ConnectivityManager$TooManyRequestsException

                                                                                                    at android.net.ConnectivityManager.convertServiceException(ConnectivityManager.java:3841)

                                                                                                    at android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:4033)

                                                                                                    at android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:4040)

                                                                                                    at android.net.ConnectivityManager.registerNetworkCallback(ConnectivityManager.java:4422)

                                                                                                    at android.net.ConnectivityManager.registerNetworkCallback(ConnectivityManager.java:4392)

                                                                                                    at com.baidu.platform.comapi.util.NetworkUtil.registerNetwork(NetworkUtil.java:210)

                                                                                                    at com.baidu.platform.comapi.util.SysOSUtil.init(SysOSUtil.java:39)

                                                                                                    at com.baidu.mapsdkplatform.comapi.b.a(Initializer.java:55)

                                                                                                    at com.baidu.mapapi.SDKInitializer.initialize(SDKInitializer.java:55)

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

官方有答复么?
请问解决了? 碰到同个问题,只有鸿蒙在抛异常

遇到了+1,鸿蒙4设备上
 

Stack trace:  

android.net.ConnectivityManager$TooManyRequestsException

     at android.net.ConnectivityManager.convertServiceException(ConnectivityManager.java:3841)

     at android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:4033)

     at android.net.ConnectivityManager.registerDefaultNetworkCallbackForUid(ConnectivityManager.java:4562)

     at android.net.ConnectivityManager.registerDefaultNetworkCallback(ConnectivityManager.java:4529)

     at android.net.ConnectivityManager.registerDefaultNetworkCallback(ConnectivityManager.java:4503)

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

HarmonyOS(鸿蒙)设备上出现TooManyRequestsException异常通常表示应用或系统组件在短时间内尝试执行了过多请求,超出了服务器的限制或内部资源的处理能力。这可能是因为网络请求、数据库操作或其他资源密集型任务过于频繁。

解决此问题的方法包括:

  1. 检查并优化代码中的请求逻辑,避免不必要的重复请求。
  2. 实现请求限流或重试机制,合理控制请求频率。
  3. 检查服务器或后端服务的响应能力和限制设置。

如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部