我正在构建一个应用程序,它在启动画面中通过URL在线加载文件中的数据。这个应用程序目前正在工作,发布,并得到很好的评论:)
然而,我注意到在我实例化URL时在某些设备(即HTC Desire)上,让我们说:url = new URL("https://www.blah.com/blah.txt");
网址只会挂在那里,启动画面会无限加载。我已经尝试将它放入自己的线程并在发生这种情况时抛出超时,但似乎它甚至锁定,因为超时永远不会从父线程的等待函数中捕获。
现在,正如我所说,这似乎只适用于HTC Desire,因为大多数设备都在使用我的应用程序。它并没有发生在每个HTC Desire的应用程序上。有问题的设备似乎偶尔会出现。有时应用程序将运行良好,有时它将无限加载。当它发生时,它发生在WiFi和3G上。如果用户在无限挂起的情况下杀死应用程序,然后重新打开,则会修复问题并加载。
我在这里没有想法......任何人都有?我唯一能想到的就是尝试不同的构造函数,可能就像:
url = new URL("https", "www.blah.com", 443, "/blah.txt");
但我不太精通网络,并且无法确定其他端口可供使用。我正在使用的网站是一个“https”网站。
提前感谢您的帮助。
答案 0 :(得分:1)
您可以在setConnectTimeout()
对象上使用URLConnection
设置连接超时。这将允许您捕获SocketTimeoutException
并重试或执行其他操作。