Ich rufe eine AsyncTask auf, um einen zuvor gestarteten Dienst zu stoppen. Aber der ProgressDialog rotiert nicht, während die Asyktask ausgeführt wird. Also ich denke, dass etwas nicht stimmt und ich könnte Probleme mit einem ANR-Fehler bekommen.AsyncTask scheint nicht wirklich async zu funktionieren
Irgendwelche Ideen?
new asyncTaskZieladresse().execute();
public class asyncTaskZieladresse extends AsyncTask<Void, Integer, Void> {
int progress;
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
final Spinner Fahrerauswahl = (Spinner)findViewById(R.id.spinner1);
final Spinner Fahrzeugauswahl = (Spinner)findViewById(R.id.spinner2);
final Spinner Nutzungsartauswahl = (Spinner)findViewById(R.id.spinner3);
Cursor mcursor = (Cursor) Fahrerauswahl.getSelectedItem();
Fahrer = mcursor.getString(mcursor.getColumnIndexOrThrow("name"));
FahrerID = mcursor.getString(mcursor.getColumnIndexOrThrow("_id"));
mcursor.close();
Cursor mcursor1 = (Cursor) Fahrzeugauswahl.getSelectedItem();
Kennzeichen = mcursor1.getString(mcursor1.getColumnIndexOrThrow("fahrzeug_kennzeichen"));
KennzeichenID = mcursor1.getString(mcursor1.getColumnIndexOrThrow("_id"));
mcursor1.close();
Cursor mcursor2 = (Cursor) Nutzungsartauswahl.getSelectedItem();
Nutzungsart = mcursor2.getString(mcursor2.getColumnIndexOrThrow("nutzungsart"));
NutzungsartID = mcursor2.getString(mcursor2.getColumnIndexOrThrow("_id"));
mcursor2.close();
VariablenUebergebenGpsFahrt();
progressDialog.dismiss();
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
progressDialog = ProgressDialog.show(Main.this, "GPS", "Ziel-Standort wird ermittelt...");
}
@Override
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
}
@Override
protected Void doInBackground(Void... arg0) {
// TODO Auto-generated method stub
stopService(new Intent(Main.this, GPSService.class));
return null;
}
}
Da Sie nichts im Hintergrund tun, was ist der Sinn einer 'AsyncTask'? Es ist wie das Forking eines Threads mit einer leeren 'run()' Methode. – CommonsWare
Ich habe das Problem, dass es manchmal sehr lange dauert, bis die nächste Aktivität aufgerufen wird. Was ich mache, ist einen Dienst zu stoppen (in den Diensten onDestroy() sind einige Werte in sharedprefs geschrieben, so dass ich die gesammelten Werte aus dem Dienst lesen kann, nachdem der Dienst in einer anderen Aktivität gestoppt wurde), und dann die ausgewählten Werte von Spinner geben die Spinner-Werte über intent.putextra ab und rufen schließlich die neue Aktivität über startActivity (intent) auf. Für mich hat es den Anschein, dass der stopService viel Zeit in Anspruch genommen hat, also habe ich versucht, ihn in der AsyncTask zu stoppen. Bin ich falsch? – venni
'stopService()' sollte gut unter einer Millisekunde dauern. Es tut nichts direkt - das tatsächliche Stoppen des Dienstes geschieht asynchron. – CommonsWare