Я пытаюсь отменить мой запрос, когда пользователь вернется или закроет Dialog.but, он выполняет хотя бы один раз, даже если я его отменил. sendPost является использование для загрузки картинок .I хотите, когда пользователь отменить диалог, то запрос не должен выполнитьКак отменить AsyncTask
private class sendd extends AsyncTask<Void, Void, Void> {
String success, mess, response, user;
Button next;
ProgressDialog pDialog;
public sendd(Context ctx) {
pDialog = new ProgressDialog(FilenewReport.this);
pDialog.setMessage("Updating ");
pDialog.setCancelable(true);
pDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
// actually could set running = false; right here, but I'll
// stick to contract.
running = false;
// cancel(true);
sends.cancel(true);
}
});
}
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog.show();
}
@Override
protected void onCancelled() {
sends.cancel(true);
running = false;
}
@SuppressLint("NewApi")
@Override
protected Void doInBackground(Void... params) {
while (running) {
try {
sendPost(file_url, imagepath);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
} catch (Exception e) {
// }
}
// if (check == false || isCancelled()) {
// break;
// }
}
return null;
}
@Override
protected void onPostExecute(Void notUsed) {
pDialog.dismiss();
}
}
Фактически, если инициировано сообщение для загрузки на сервер, то отмена задачи остановит дальнейшее выполнение задачи, но не остановит инициированную связь. Даже если вы сбросите соединения, то и то, что уже было отправлено, будет записано на стороне сервера , ya, но поскольку вы отменили отмену, вы не сможете получить ответ от сервера. –
Я получаю ответ также – user3405716
ОК, так что это может происходить во фракции. –