在Android上,WiFi连接的丢失不会导致连接终止,但移动数据网络的丢失会导致连接终止。为什么? 我正在为我的应用程序在android Galaxy S6上测试网络连接丢失 我有两种类型的网络1)WIFI 2)移动数据 我建立了一个从设备到服务器的流 我使用SMACK建立流
我做两种类型的测试:在Android上,WiFi连接的丢失不会导致连接终止,但移动数据网络的丢失会导致连接终止。为什么? 我正在为我的应用程序在android Galaxy S6上测试网络连接丢失 我有两种类型的网络1)WIFI 2)移动数据 我建立了一个从设备到服务器的流 我使用SMACK建立流,android,smack,Android,Smack,我做两种类型的测试: 首先,我在启动应用程序之前禁用了WIFi。这意味着我只在启用移动数据的情况下启动 在应用程序中,我切换到“飞行模式” 我观察到我的流是关闭的,错误为“错误时连接关闭”,由网络丢失触发 第二,我只使用WIFI启动我的应用程序(启动应用程序前我禁用移动数据) 我重复上述相同的测试用例,切换到“飞行模式” 但这一次,app/smack库没有检测到连接丢失,我也没有看到与网络相关的错误 你能解释一下这种差异吗?某些Android内核在某些情况下不会关闭TCP套接字。还取决于
- 第二,我只使用WIFI启动我的应用程序(启动应用程序前我禁用移动数据)
- 我重复上述相同的测试用例,切换到“飞行模式”
- 但这一次,app/smack库没有检测到连接丢失,我也没有看到与网络相关的错误
你能解释一下这种差异吗?某些Android内核在某些情况下不会关闭TCP套接字。还取决于飞机模式的具体实施方式。那么,在这种情况下,smack重新连接管理器将不起作用。因此,我应该依靠失败的ping(s)或连接更改通知通过显式断开连接和显式连接来重新建立流吗?答案很简单:您应该两者都做。使用Smack的
ServerPingWithAlarmManager
API每隔一段时间执行一次定时服务器ping,并监听CONNECTIVY\u更改
意图。然后使用XMPPTCPConnection.instantShutdown()
终止连接,但保持流管理状态并重新连接。