ユーザーが戻るボタンを押すと、asynctaskをキャンセルします
-
28-09-2019 - |
質問
私はasynctaskを持っています。そこでは、onpreexecuteで進行状況を示し、onpostexecuteで再び非表示にします。
final class UploadTask extends AsyncTask {
ProgressDialog dialog = new ProgressDialog(...);
protected onPreExecute() {
dialog.show();
}
protected onPostExecute() {
dialog.hide();
}
};
ダイアログはキャンセル可能であり、Asynctaskの実行中にキャンセルボタンを押すと実際に消えます。
これが起こったら、Asynctaskをキャンセルするためにいくつかのコードを実行したいと思います(現在、彼が進行中に消えると思っても、Asynctaskは実行され続け、最終的に完了します)。 ProgressDialogから自分のクラスを導き出してみました
setOnDismissListener(new OnDismissListener() {
@Override public void onDismiss(DialogInterface d) {
/* do something */
}
};
(またはoncancellistenerと同様のもの)が、これは単に呼び出されることはありません。
何か案は? ProgressDialogが表示されている間に、ユーザーが実行中のAsynctaskをキャンセルするためのメカニズムが必要です。
解決
私はこれをテストしていませんが、このようなことを試してみてください:
final class UploadTask extends AsyncTask implements OnDismissListener{
ProgressDialog dialog = new ProgressDialog(...);
protected onPreExecute() {
dialog.setOnDismissListener(this);
dialog.show();
}
protected onPostExecute() {
dialog.hide();
}
@Override
public void onDismiss(DialogInterface dialog) {
this.cancel(true);
}
};
他のヒント
私はあなたがこれを探していると思います:oncancelled()
http://developer.android.com/reference/android/os/asynctask.html
所属していません StackOverflow