我已经成功编写了一个应用程序,该应用程序每 10 秒跟踪一次分配的系统服务(GPS 位置、网络位置、wifi、neighbouringcellinfo、传感器 ....),效果很好,但是一旦我限制了我的手机上的互联网仅使用 2G 并关闭 Wifi 我得到该应用程序仍然可以运行但开始滞后。
我试图找出问题的根源,我注意到它来自以下代码行:
XmlPullParser receivedData = XmlPullParserFactory.newInstance()
.newPullParser().setInput(xmlUrl.openStream(), null); return receivedData;
一旦我在我的 Activity 中删除这几行代码,该应用程序就可以正常运行,但鉴于它们对我的应用程序至关重要,我非常希望它们可以正常运行(它们已经在运行)但不会造成延迟.
谁能帮帮我?
我已经打印了 XML 文件的解析结果,它是正确的,所以我唯一的问题是应用程序滞后。
我要处理的典型 XML 文件如下所示:
<rsp stat="ok">
<cell lat="49.88415658974359" lon="8.637537076923078" mcc="262" mnc="7" lac="41146"
cellid="42404" averageSignalStrength="-79" samples="39" changeable="1"/>
</rsp>
最佳答案
2g 是一些非常慢的连接。更糟糕的是天线的“预热”。在接收到第一位之前,它可能会持续长达 30 秒。 (而且你真的无能为力,因为这完全是关于物理学的)。
所以你唯一能做的就是在后台线程中加载文件。这将使应用程序响应(如果您不需要及时的数据)。
关于java - 在非常慢的 2G 互联网上下载 xml 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23838349/