Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android上,WiFi连接的丢失不会导致连接终止,但移动数据网络的丢失会导致连接终止。为什么? 我正在为我的应用程序在android Galaxy S6上测试网络连接丢失 我有两种类型的网络1)WIFI 2)移动数据 我建立了一个从设备到服务器的流 我使用SMACK建立流_Android_Smack - Fatal编程技术网

在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。这意味着我只在启用移动数据的情况下启动

  • 在应用程序中,我切换到“飞行模式”
  • 我观察到我的流是关闭的,错误为“错误时连接关闭”,由网络丢失触发

    • 第二,我只使用WIFI启动我的应用程序(启动应用程序前我禁用移动数据)
    • 我重复上述相同的测试用例,切换到“飞行模式”
    • 但这一次,app/smack库没有检测到连接丢失,我也没有看到与网络相关的错误

    你能解释一下这种差异吗?

    某些Android内核在某些情况下不会关闭TCP套接字。还取决于飞机模式的具体实施方式。

    那么,在这种情况下,smack重新连接管理器将不起作用。因此,我应该依靠失败的ping(s)或连接更改通知通过显式断开连接和显式连接来重新建立流吗?答案很简单:您应该两者都做。使用Smack的
    ServerPingWithAlarmManager
    API每隔一段时间执行一次定时服务器ping,并监听
    CONNECTIVY\u更改
    意图。然后使用
    XMPPTCPConnection.instantShutdown()
    终止连接,但保持流管理状态并重新连接。