【问题标题】:Is there an Android InputStream class that times out?是否有超时的 Android InputStream 类?
【发布时间】:2012-12-20 19:44:08
【问题描述】:

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

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

【问题讨论】:

    标签: android timeout inputstream


    【解决方案1】:

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

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

    【讨论】:

    • 自行超时,我的意思是一种将参数作为超时长度的方法。对我来说似乎并不疯狂。非常感谢您的回答。
    【解决方案2】:

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

    【讨论】:

    • 谢谢,我正在阅读它,但这似乎仍然太麻烦了。没有一个输入流会自行超时,这似乎很荒谬。
    猜你喜欢
    • 2015-10-16
    • 2010-10-22
    • 2020-04-06
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 2014-10-01
    • 1970-01-01
    相关资源
    最近更新 更多