我正在构建一个应用程序,它在初始屏幕中通过在线 URL 从文件加载数据。此应用目前正在运行、已发布并获得好评 :)
但是,我注意到在某些设备(即 HTC Desire)上,当我实例化一个 URL 时,可以这样说:
url = new URL("https://www.blah.com/blah.txt");
URL 会卡在那里,启动画面会无限加载。我试过将它放入它自己的线程并在发生这种情况时抛出超时,但它似乎甚至锁定了它,因为超时永远不会从父线程的等待函数中捕获。
现在,正如我所说,这似乎只适用于 HTC Desire,因为大多数设备都可以顺利使用我的应用程序。并不是每台 HTC Desire with app 都会出现这种情况。出现问题的设备似乎偶尔会出现。有时应用程序可以正常运行,有时会无限加载。当它发生时,它会同时发生在 WiFi 和 3G 上。如果用户在应用程序无限挂起时终止应用程序,然后重新打开,它会解决问题并正常加载。
我没有想法了...有人有吗?我唯一能想到的就是尝试不同的构造函数,比如:
url = new URL("https", "www.blah.com", 443, "/blah.txt");
但我不太懂网络,无法确定要使用的其他端口。我使用的网站是“https”网站。
预先感谢您的帮助。
最佳答案
您可以在 URLConnection
对象上使用 setConnectTimeout()
设置连接超时。这将允许您捕获 SocketTimeoutException
并重试或执行其他操作。
关于java - Android 无限 URL 加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7896633/