1

我目前InputStream在我的应用程序中使用 ( import java.io.InputStream) 并且遇到了有关超时的问题。似乎工作的方式InputStream是它等待一定数量的位然后继续。对于我的应用程序,这在很多时候都有效,但在某些情况下,我预计读取会因超时而失败。有谁知道这样做的方法?

我发现了许多创建线程以与read()函数一起运行并取消它的示例,但我想知道是否有一个现有的类可以让我使用InputStream超时。

4

2 回答 2

1

我会用AsyncTask<>这个。您可以尝试开始异步读取流,然后在您选择的时间取消任务,而不是阻止您的 UI。文档在这里

于 2012-12-20T19:49:40.073 回答
1

这在很大程度上取决于您从哪里阅读。如果它来自文件(或本地)套接字,则没有超时。如果是来自远程套接字,则可以在创建套接字时指定超时。如果超时,您应该得到一个例外。使用threads/AsyncTask是可行的方法,但通常不能中断阻塞的读取,除非您使用Java NIO。

不,这并不荒谬,您如何建议它“自行超时”?必须有人发出超时信号,并且有人要么是某种监视器线程,要么是操作系统引发错误。

于 2012-12-21T08:54:53.280 回答