首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android -不使用移动数据/3G下载数据

Android -不使用移动数据/3G下载数据
EN

Stack Overflow用户
提问于 2012-06-23 19:57:01
回答 1查看 375关注 0票数 0

我有一个android应用程序,用户可以按下“更新”按钮来更新。这在wifi上工作得很好。然而,在移动数据上,它存在一个问题。更新过程连接到我的REST服务器,实际上连接到3个不同数据的URL。在移动数据上,第一个和最后一个URL工作正常,但是第二个URL返回空白数据。就像我说的,在WIFI上,所有三个URL都工作得很完美,但是在3G上,它们却没有。总是只有第二个URL才会引起问题。

这是我的密码。这是相当标准的:

代码语言:javascript
运行
复制
//FIRST
URL url = new URL(Constants.firstURL); 
String line = null; 
InputStream is = (InputStream) url.getContent(); 
StringBuilder sb = new StringBuilder(); 
BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
while((line = reader.readLine()) != null)
{ 
    sb.append(line); 
} 
firstRawData = sb.toString().replace(" ", "").replace("\n", ""); 
is.close(); 

//SECOND
url = new URL(Constants.secondURL); 
line = null; 
is = (InputStream) url.getContent(); 
sb = new StringBuilder(); 
reader = new BufferedReader(new InputStreamReader(is)); 
while((line = reader.readLine()) != null)
{ 
    sb.append(line); 
} 
secondRawData = sb.toString().replace(" ", "").replace("\n", ""); 
is.close();

//THIRD
url = new URL(Constants.thirdURL); 
line = null; 
is = (InputStream) url.getContent(); 
sb = new StringBuilder(); 
reader = new BufferedReader(new InputStreamReader(is)); 
while((line = reader.readLine()) != null)
{ 
    sb.append(line); 
} 
thirdRawData = sb.toString().replace(" ", "").replace("\n", ""); 
is.close();

我希望在这方面有任何帮助,因为我从来没有遇到过这个问题。

谢谢。

编辑:在我能看到的任何地方都没有错误,而且我在try/catch中有捕获MalformedURLExceptionIOExceptionNullPointerException的URL内容,并且没有抛出异常。洛格猫也什么都不告诉我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-29 15:19:53

好的,过了一会儿,我自己回答了这个问题,但忘了回答。

问题在于,我是从线程中调用此方法的。线程正在继续工作,而其余的代码正在向前推进。当它向前移动的时候,第二个URL只是没有完成。

当我将调用移出线程并按顺序运行时,一切都很好!

我在想,我必须在一个线程中运行任何互联网检索的东西,但我认为这些调用已经在线程中,所以它是不必要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11172548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档