我有一个应用,可以在不同的线程中使用HttpURLConnection
进行大量下载。第一个活动在onCreate
期间发出2个线程请求。一切都在几台设备上正常工作,但现在我的客户(!)买了一台带有Android 5.0.2的三星Tab A SM-T550。
在这款平板电脑上,我的应用程序每个请求都需要几分钟,而其他设备只需要一秒钟。客户告诉我,在请求到达服务器之前浪费了时间。 (基于日志文件中的时间戳)
其他应用程序运行良好,因此我的客户因此问题而责怪我。
此设备或Android版本是否存在任何已知问题?
更新: 我今天从我的客户那里得到了平板电脑,将它连接到我的WLAN,它运行良好! 但在他的办公室里,我可以自己看到,连接速度极慢,而其他应用程序运行得很快。 怎么可能? 客户拥有非常快速的DSL连接。 (50或100 MBit - 他不确定) 似乎问题是在本地,但我不知道在哪里寻找解决方案...
这是我的代码:
public boolean requestHTTPData(TransferResult txResult, String url) {
boolean res = false;
this.txResult = txResult;
try {
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
txResult.setData(in);
txResult.setResult(TransferResult.RESULT_OK);
res = true;
}
catch (Exception e) {
txResult.setError(e.getLocalizedMessage());
}
return res;
}
以下是TranferResult的代码:
public class TransferResult {
public static final int RESULT_OK = 1;
public static final int RESULT_ERROR = -1;
public static final int RESULT_UNDEF = 0;
protected String response = null;
protected int result = RESULT_UNDEF;
protected StringBuffer errorText = null;
protected BufferedReader data = null;
protected Boot[] boote;
protected int startIndex = 0;
protected int anzahl = 0;
public String getResponse() {
return response;
}
public void setResponse(String response) {
this.response = response;
}
public int getResult() {
return result;
}
public void setResult(int result) {
this.result = result;
}
public BufferedReader getData() {
return data;
}
public void setData(BufferedReader data) {
this.data = data;
}
public boolean wasSuccessfull() {
return (result == RESULT_OK);
}
public Boot[] getBoote() {
return boote;
}
public void setBoote(Boot[] boote) {
this.boote = boote;
}
public int getStartIndex() {
return startIndex;
}
public void setStartIndex(int startIndex) {
this.startIndex = startIndex;
}
public int getAnzahl() {
return anzahl;
}
public void setAnzahl(int anzahl) {
this.anzahl = anzahl;
}
public void setError(String newErrorText) {
if (newErrorText != null && newErrorText.length() > 0) {
if (errorText == null) {
errorText = new StringBuffer();
} else {
errorText.append("\n");
}
this.errorText.append(errorText);
}
result = RESULT_ERROR;
}
public StringBuffer getErrorText() {
return errorText;
}
public void showError(Context context) {
if (errorText == null) {
setError("Errortext is NULL");
}
AlertDialog alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle("");
alertDialog.setMessage(errorText);
alertDialog.show();
}
public TransferResult(Boot[] boote, int startIndex, int anzahl) {
super ();
this.setBoote(boote);
this.setStartIndex(startIndex);
this.setAnzahl(anzahl);
}
public TransferResult() {
this (null, 0, 0);
}
}
欢迎任何想法。