AsyncTaskを呼び出して、以前に開始したサービスを停止します。 しかし、Asyctaskが実行されている間、ProgressDialogは回転しません。 何か間違っていると思い、ANRエラーで問題が発生する可能性があります。AsyncTaskは実際には非同期では動作しないようです。
アイデア?
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;
}
}
バックグラウンドで何もしていないので、AsyncTaskを持っている点は何ですか?これは、空の 'run()'メソッドを使ってスレッドをフォークするのと同じです。 – CommonsWare
私は、次のアクティビティが呼び出されるまでに時には時間がかかるような問題があります。私がやっていることはサービスを停止することです(onDestroy()内の値はsharedprefsに書き込まれた値なので、別のアクティビティでサービスが停止した後に収集された値を読み取ることができます)。スピナーの値をintent.putextra経由で渡し、最後にstartActivity(インテント)を介して新しいアクティビティを呼び出します。私にとっては、stopServiceには多くの時間がかかりましたので、AsyncTaskでstopServiceを停止しようとしていました。私は間違っていますか? – venni
'stopService()'は1ミリ秒以下で十分です。サービスの実際の停止は非同期で行われます。 – CommonsWare