Skip to content

sdk bug[5-11] 大小循环切换(切网)各种问题 #22

@evanwang1021

Description

@evanwang1021

1、切网后,Android UI线程卡死。但过一段时间又可以恢复。
问题分析:切网过程中,会先后执行释放资源,以及重建资源的工作,如果两个工作间隔时间太短(10ms级),可能出现线程互锁卡死的问题。
解决思路:将释放资源和重建资源的工作移到workerThread,但需要保证workerThread之间的线程同步问题。另外,需要切网断开false和连接true相隔的时间太短,需要将true线程触发时机放在false线程执行完毕之后。

2、切网后,Mqtt重启失败
问题分析:一是可能开启两次mq,导致失败,二是可能抛出MqttException导致。
解决思路:暂时没有特别好的思路,可以尝试用AlarmManager的RTC定时器来定时检查连接的有效性,然后激活连接。最好还是尝试换一套开源程序试试(比如Paho)。

3、多次切到内网后,小循环指令发送没有反馈。在切到外网,大循环发送依然没有反馈(有的时候是大循环挂了,小循环依旧没问题)。
问题分析:可能是每次切到内网,都会和WiFi模块建立连接。但是再次切网的时候,TCP属于异常断开,WiFi模块端的连接没有释放,导致WiFi模块的连接数过多,阻塞了sockA,和sockB。
解决思路:模块的长连接回收时间缩短,设成10s无交互就回收。然后App需要不断发送心跳保活。

4、切到内网后,本来应该走小循环,但是还是大循环。
有可能是模块本身已经很难连接上了

5、切网后,Volley访问被重定向到了360免费WiFi的欢迎页,而且多次请求结果相同。
蛋疼。。。
解决思路:判断如果是HTML,释放掉缓存,重新请求一次。应该会重写Volley的重试类

Others、内网状态一直处于CONNECTING状态
出现过一次,需要整理一下逻辑

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions