Hallo miteinander,
ich möchte von euch gern in Erfahrung bringen wie ihr eure Anwendungen aufbaut, wenn diese Daten aus dem Internet lädt. Aktuell ist es in vielen Anwendungen bei mir so, dass ich die Daten innerhalb eines AsyncTask herunterlade (Nur Text). Bislang habe ich in meinen Anwendungen nur Exeptions und eine bestehende Verbindung berücksichtigt, aber bisher kein Timeout etc pp.
Wie läuft das Ganze bei euch so? Ein Typisches Beispiel von mir (downloadFromUrl wird innerhalb des AsyncTasks aufgerufen!):
private String downloadFromUrl(String siteurl)
throws ClientProtocolException, IOException {
InputStream inputStream = null;
try {
HttpClient httpClient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(siteurl);
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs
.add(new BasicNameValuePair("user", user));
nameValuePairs.add(new BasicNameValuePair("pass", pass));
nameValuePairs.add(new BasicNameValuePair("days", days));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));
HttpResponse response = httpClient.execute(httppost);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == HttpStatus.SC_OK) {
HttpEntity entity = response.getEntity();
if (entity != null) {
String responseBody = EntityUtils.toString(entity);
return responseBody;
}
} else if (statusCode == HttpStatus.SC_BAD_REQUEST) {
// error bad request shoe message BAD_REQUEST
Log.i("BAD REQUEST", "BAD REQUEST");
} else if (statusCode == HttpStatus.SC_BAD_GATEWAY) {
// error bad request shoe message BAD_GATEWAY
Log.i("SC_BAD_GATEWAY", " SC_BAD_GATEWAY");
}
} finally {
if (inputStream != null) {
inputStream.close();
}
}
return "null";
}
Alles anzeigen
Verbesserungsvorschläge? GGf. Intent Services ? Wie am besten Timeouts verarbeiten (Beispiel)?
Des Weiteren wäre es mal interessant zu Wissen wie ihr vorgeht, wenn ihr "berechnungen oder anderes" im Hintergrund ausführt die NICHT unterbrochen bzw. aufgeschoben werden dürfen durch andere AsycTasks. Sprich es wurden gleichzeitig mehrere AsyncTasks ausgelöst.