1
123thomas
Fortgeschrittenes Mitglied
- 44
Hallo Leute,
ich habe mal wieder ein kleines Problem, zu dem ich nicht wirklich was im Internet finden konnte.
Unzwar habe ich eine App, welche mit AsyncTask Daten aus einer MySQL Datenbank abgleicht. Nun dachte ich das die AsyncTasks völlig unabhängig vom UI Thread arbeiten, doch leider wird meine App Bedienung blockiert wenn der AsyncTask anfängt zu arbeiten.
Dann habe ich die Methode doinBackground durchgesehen, ob ich irgendwo runOnUiThread eingefügt habe, aber habe ich nicht.
Hier der Quelltext:
Aufruf des Asynctask:
Runnable r=new Runnable() {
public void run()
{
//Lade Daten aus SQL
new MyBaseAdapter().new LadeSQLDaten().execute();
Ist der AsyncTask kein unabhängiger Thread oder habe ich einen Fehler gemacht?
Mit freundlichen Grüßen
Thomas
ich habe mal wieder ein kleines Problem, zu dem ich nicht wirklich was im Internet finden konnte.
Unzwar habe ich eine App, welche mit AsyncTask Daten aus einer MySQL Datenbank abgleicht. Nun dachte ich das die AsyncTasks völlig unabhängig vom UI Thread arbeiten, doch leider wird meine App Bedienung blockiert wenn der AsyncTask anfängt zu arbeiten.
Dann habe ich die Methode doinBackground durchgesehen, ob ich irgendwo runOnUiThread eingefügt habe, aber habe ich nicht.
Hier der Quelltext:
Aufruf des Asynctask:
Runnable r=new Runnable() {
public void run()
{
//Lade Daten aus SQL
new MyBaseAdapter().new LadeSQLDaten().execute();
Code:
class LadeSQLDaten extends AsyncTask<String,String,String> {
@Override
protected void onPreExecute()
{
super.onPreExecute();
LadeEinträge = true;
}
@Override
protected String doInBackground(String... params1) {
try{
if(isOnline()) {
//Wir erstellt aber nicht benötigt daher leer
List<NameValuePair> params = new ArrayList<NameValuePair>();
//Lade Daten aus der Datenbank
jsonLade = jsonpraserLade.makeHttpRequest(URLLadeEinträge, "GET", params);
Log.d("LadeEinträge", "Verbindung" + "URL:" + URLLadeEinträge);
int success = 0;
success = jsonLade.getInt("success");
Log.d("LadeEinträge", "success:" + String.valueOf(success));
//Wenn erfolgreich gemeldet wird
if (success == 1) {
//Hole die Produkte
JSONArray products = null;
products = jsonLade.getJSONArray("products");
for (int i = 0; i < products.length(); i++) {
JSONObject lade = null;
lade = products.getJSONObject(i);
//Setzte Eintrag
Log.d("LadeEinträge", String.valueOf(lade.getInt("Position")) + " " + lade.getString("Gegenstand") + " " + lade.getString("Anzahl")+ " " + lade.getString("Strike"));
//if(String.valueOf(lade.getInt("Position")) != "null")
boolean tempStrike = false;
if(lade.getString("Strike").equals("true"))
{
tempStrike = true;
Log.d("Streiche","Position|" + lade.getInt("Position") + "||"+ i);
}
setEintrag(String.valueOf(lade.getInt("Position")), lade.getString("Gegenstand"), lade.getString("Anzahl"), tempStrike);
//else
//Log.d("LadeEinträge", "Position null");
}
LadeEinträgeerfolgreich = true;
//showToast("Einträge erfolgreich geladen");
//Kein Fehler Verbindung grün auslösen
if (listener != null)
{
Log.d("OnStatusChange", "grün");
listener.onStatusChange("grün");
}
Log.d("LadeEinträge", "Angelegt");
} else {
//K für Kein Eintrag gefunden
if (jsonLade.getString("message").startsWith("K")) {
//löscheAlles();
//showToast("Kein Eintrag in der Online Datenbank gefunden");
Log.d("LadeEinträge", "löscheAlles()");
//Kein Fehler Verbindung grün auslösen
if (listener != null) {
listener.onStatusChange("grün");
}
LadeEinträgeKeinEintrag = true;
} else {
//Fehler Verbindung rot auslösen
if (listener != null) {
listener.onStatusChange("rot");
}
}
Log.d("LadeEinträge", "Failed success: " + jsonLade.getString("message"));
LadeEinträgeerfolgreich = false;
}
}
else
{
Log.d("LadeSQLDaten", "Keine Verbindung");
//Keine Verbindung
if(listener != null)
{
listener.onStatusChange("orange");
}
}
}
catch(Exception e) {
Log.e("LadeEinträge", "Failed: " + e.getMessage());
//Fehler Verbindung rot auslösen
if(listener != null)
{
listener.onStatusChange("rot");
}
LadeEinträgeerfolgreich = false;
}
return null;
}
protected void onPostExecute(String hhh)
{
//listview aktualisieren
updateListonChange();
LadeEinträge = false;
}
}
Ist der AsyncTask kein unabhängiger Thread oder habe ich einen Fehler gemacht?
Mit freundlichen Grüßen
Thomas