【问题标题】:sockettimeOutexception when app goes in background应用程序进入后台时的sockettimeOutexception
【发布时间】:2017-07-04 07:18:32
【问题描述】:

当应用程序进入后台时我设置了一个警报,它工作正常,但在服务内部我有 api 每 5 分钟调用一次以将位置发送到服务器,在应用程序进入后台后,服务工作继续,但由于网络我的 api尽管网络可用,但未调用并获取 sockettimeOutException。

【问题讨论】:

  • 你解决过这个问题吗?我遇到了同样的问题
  • 我也有这个问题
  • 我也有这个问题。有关如何修复它的任何消息?

标签: android service retrofit2 socket-timeout-exception


【解决方案1】:

SocketTimeoutException 在套接字读取或接受超时时发生。例如:从套接字输入流中读取字节。网络可能可用,但您未在套接字上接收数据,因此在经过一段时间且未接收任何数据后,将引发此异常。

您可以使用socket.setSoTimeout(0) 设置套接字超时值以不超时。

【讨论】:

  • 我认为你没有清楚地理解我的问题。让我简要解释一下。当我的应用程序当时进入后台时,当我返回并再次打开我的应用程序时,只有网络不可用,它工作正常。它不会抛出 socketTimeOutException。基本上,我正在做的是,我每分钟都在变长,每 2 分钟发送一次到服务器。我为此使用了alarmReceiver,它运行良好,服务不会被杀死。希望你现在明白这一点。
【解决方案2】:

我们可以通过定义一个套接字超时来处理它(使更多超时),然后通过使用 try catch 块来处理它..

    serverSocket.setSoTimeout(10000); //set the socket timeout in milliseconds

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-09
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 2014-12-13
    • 1970-01-01
    相关资源
    最近更新 更多