如何在 Android 中的一定时间后停止 BufferedReader

How to stop a BufferedReader after a certain amount of time in Android

我有一个线程可以打开一个将数据发送到服务器的套接字。服务器可能会根据是否有人在工作站发回数据。但是我试图在 BufferedReader 上设置超时,以便在 30 秒后它继续说响应为空。

//Receive Response
bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
response = new StringBuilder();
while ((line = bufferedReader.readLine()) != null ) {
    response.append(line);
}

这是我的 BufferedReader,非常标准,我查看了很多计时器和其他帖子,但没有找到可行的解决方案。

您可以在您的套接字实例上调用 setSoTimeout()

Itt 将在达到超时时引发 SocketTimeoutException。将您的阅读逻辑包装在 try-catch 块中,捕获该异常并按您的意愿处理它。

像这样:

try {
    socket.setSoTimeout(30000);

    bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    while ((line = bufferedReader.readLine()) != null ) {
        response.append(line);
    }
} catch (SocketTimeoutException ste) {
    // timeout reached
} catch (Exception e) {
    // something else happened
} finally {
    // some general processing
}