Android监听网络变化时的bug

本文探讨了Android中使用动态广播监听网络变化时遇到的问题,包括VoLTE下ims network的影响及getActiveNetworkInfo()方法的局限性,并提出了相应的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  最近在做监听网络变化改变视频播放码率的功能,涉及到了Android网络变化监听,我采用了动态广播监听网络变化,在使用过程中发现了一些问题。

  1. 当开启VoLTE高清通话时,getAllNetworks()方法中会存在一个ims的network,并且在只开启数据网络的时候,会返回ims和我们正在使用的接入点这2个network,当同时开启wifi和数据网络时,只返回ims和wifi这2个network,只开启wifi时,也会返回ims和wifi 2个network,将wifi和数据网络都关闭,也会返回一个ims的network,这个问题导致了1.无法正确判断当前是否已开启数据网络。2. 无法正确判断当前是否无任何网络连接。


2. 一开始我使用getActiveNetworkInfo(),使用这个方法可以排除1中描述的无法正确判断当前是否已开启数据网络的问题,但在同时开启wifi和数据网络的情况下,关闭wifi,再次调用getActiveNetworkInfo()返回为null,导致1中的第二个问题,无法正确判断是否无任何网络连接仍然存在。


因为身边只有一台自用的红米note4x,目前无法判断是小米手机的问题还是Android自身的问题,现阶段的解决方案是正常使用getActiveNetworkInfo()判断网络变化情况,但在返回为null的情况下延迟一秒的时间再次调用getActiveNetworkInfo()是否null,仍然为null表示无任何网络连接,不为null则判断是否是数据网络。


ps: 当wifi和数据网络都开启时,单独关闭打开数据网络无法接收到网络变化的广播。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值