关于Android 网络的问题

最近在Android8.1开发遇到一个奇怪的问题,在使用网易云信的信令时,发现在Android系统息屏的情况下,网易云信的信令接收不及时,严重时心跳都会超时,刚开始以为是网络的问题,于是在项目中定时ping一下服务器ip并同时获取Android 系统中sim卡信号dbm值写入log文件中。发现一个奇怪的现象,我们每秒执行一次上面的方法时,网易云信的信令便可以实时接收了。但是把ping服务器的操作取消掉,只获取系统中的dbm值写入log中并每秒执行一次,信令接收又变得有延迟了。项目中的wakelock也已经加上了。有没有遇到类似的情况或者处理经验

可能是由于系统的省电策略导致的,当手机屏幕关闭时,系统会进入深度睡眠状态,CPU会进入休眠状态以节省电量,这会导致网络连接不稳定,可能会导致信令接收延迟。为了解决这个问题,可以尝试使用Android系统提供的PowerManager和WakeLock来保持设备的唤醒状态,从而保证网络连接稳定。

具体来说,可以使用PowerManager来获取WakeLock对象,然后在执行任务时使用WakeLock.acquire()方法获取锁,执行完任务后再使用WakeLock.release()方法释放锁。这样可以确保在任务执行期间设备保持唤醒状态,从而保证网络连接稳定,信令接收不会延迟。

另外,还可以尝试使用AlarmManager来定时执行ping服务器的操作,而不是使用一个无限循环的定时器。这样可以在设备进入深度睡眠状态时依然能够保证定时执行ping操作,从而确保网络连接的稳定性。