我已经成功编程了一个应用程序,该应用程序每隔10秒钟就可以记录系统服务分配的痕迹(GPS位置,网络位置,wifi,neighbouringcellinfo,传感器....),效果很好,但是只要我限制了互联网的连接手机仅使用2G并关闭Wifi,我仍然可以使用该应用程序,但开始出现延迟。
我试图找出问题的出处,并注意到它来自以下代码行:
XmlPullParser receivedData = XmlPullParserFactory.newInstance()
.newPullParser().setInput(xmlUrl.openStream(), null); return receivedData;
一旦我在活动中删除了这对代码行,该应用程序就会正常运行,而不会滞后,但是看到它们对于我的应用程序至关重要,因此我非常希望它们能够工作(它们已经这样做了),但不会造成延迟。
谁能帮帮我吗?
我已经从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秒。 (实际上,您不能对此采取任何措施,因为这全都与物理学有关)。
因此,您唯一可以做的就是将文件加载到后台线程中。这将使appp具有共振性(如果您不需要及时获取数据)。