我目前在我的应用程序中使用InputStream
(import java.io.InputStream
)并遇到了关于超时的问题。 InputStream
似乎工作的方式是它等待一定量的位然后继续。对于我的应用程序,这在很多时候都有效,但有些情况下我希望读取因超时而失败。有谁知道这样做的方法?
我发现很多创建线程的示例与read()
函数一起运行并取消它,但我想知道是否有现有的类允许我使用超时的InputStream
。 / p>
答案 0 :(得分:1)
我会使用AsyncTask<>
。您可以尝试异步开始读取流,然后在您选择取消任务时,而不是阻止您的UI。文档 here
答案 1 :(得分:1)
这在很大程度上取决于您的阅读地点。如果它来自文件(或本地)套接字,则没有超时。如果它来自远程套接字,则可以在创建套接字时指定超时。如果它超时你应该得到一个例外。使用线程/ AsyncTask
是可行的方法,但除非使用Java NIO,否则通常无法中断被阻止的读取。
不,这不是荒谬的,你是如何建议自己超时的?&#39;?有人必须发出超时信号,并且某人是某种监视器线程或操作系统引发错误。