问题描述:
当app处于后台时,按电源键锁屏待机,等待几分钟后,再次解锁亮屏进入app后,进行网络请求时,一直返回无网络连接导致网络错误。(该网络错误是网络框架返回的,与后台服务器无关,观看服务器访问日志,也确认没有访问记录)
原因:
项目中使用了kalle网络框架啊,该框架中添加了网络状态变化广播监听,在手机息屏亮屏时会判断网络状态,假如判断网络状态为无网络连接,则网络请求被拦截,直接返回网络错误(避免无网络时等待网络超时返回),具体的网络连接状态此处不具体列出,此处问题的关键点在于NetworkInfo的isConnected()的结果。
在正常情况下,该网络判断正常,但是当小米息屏几分钟后,亮屏打开app请求网络,即时网络连接正常,但isConnected()的结果一直返回false,导致网络请求一直不成功。(具体是无wifi连接,有数据连接的情况下发现该问题(wifi下也有同样问题),并且能重现),其它手机系统暂无发现,因此怀疑是小米系统导致。不知道其它app有无通过isConnected()来做该判断,他们的网络访问是正常的。
解决方法:
当手机系统为小米系统时,忽略isConnected()判断,不理会是否有连接,通过网络超时来返回网络错误。
或者通过访问固定链接(如:百度首页等)是否成功来判断网络状态。