HarmonyOS 鸿蒙Next手机上出现TooManyRequestsException异常
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异常的鸿蒙系统上反射不出来
是否有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
异常通常表示应用或系统组件在短时间内尝试执行了过多请求,超出了服务器的限制或内部资源的处理能力。这可能是因为网络请求、数据库操作或其他资源密集型任务过于频繁。
解决此问题的方法包括:
- 检查并优化代码中的请求逻辑,避免不必要的重复请求。
- 实现请求限流或重试机制,合理控制请求频率。
- 检查服务器或后端服务的响应能力和限制设置。
如果问题依旧没法解决请加我微信,我的微信是itying888。