Android – Detener AsyncTask cuando se pulsa el botón Atrás y volver a Actividad anterior
Tengo un AsyncTask y quiero que estipule la ejecución cuando se pulsa el botón Atrás. También quiero que la aplicación vuelva a la actividad mostrada anteriormente. Parece que he logrado detener la tarea, pero la aplicación no vuelve a la actividad anterior. ¿Algunas ideas? Este es un extracto de mi código
private class MyTask extends AsyncTask<Void, Void, Void> implements OnDismissListener{ private boolean exception= false; @Override protected void onPreExecute(){ pd = ProgressDialog.show( IscrizioniActivity.this, "Please wait...", "Loading the data", true, true, new DialogInterface.OnCancelListener(){ public void onCancel(DialogInterface dialog) { MyTask.this.cancel(true); } } ); } @Override protected Void doInBackground(Void... voids) { //do something return (null); } @Override protected void onPostExecute(Void voids) { pd.dismiss(); //do something } public void onDismiss(DialogInterface dialog) { this.cancel(true); } }
Saludos.
- AsyncTask nunca se ejecuta onPostExecute
- Android: puede AsyncTask devolver en otro hilo de rosca de interfaz de usuario?
- Obteniendo NetworkOnMainThreadException mientras integra el API de twitter en android
- Android: ¿Cómo puedo pasar parámetros a OnPreExecute () de AsyncTask?
- ¿Cómo ejecutar AsyncTask <> localizado en un fragmento de su padre?
- Fragmentos que se sustituyen mientras se ejecuta AsyncTask - NullPointerException en getActivity ()
- ¿Cómo puedo hacer que un ProgressDialog sea cancelable por el botón de retroceso pero no por un toque de pantalla?
- Tarea asíncrona versus servicio para descargar datos
- Llamar a varias AsyncTask a la vez que no funcionan en Android
- ¿Cómo es que Android AsyncTask no implementa el futuro?
- Android Descargar varios archivos y mostrar el progreso en ListView
- Quiero reproducir un audio. ¿Utilizo Thread, AsyncTask o Service?
- Tostada en AsyncTask en la clase Non Activity
pd.setCancelable(true); pd.setOnCancelListener(cancelListener); bCancelled=false; pd is your progressdialog box
Y ahora usa cancelListner
OnCancelListener cancelListener=new OnCancelListener(){ @Override public void onCancel(DialogInterface arg0){ bCancelled=true; finish(); } };
En su actividad, anule el botón Atrás, detenga el AsyncTask en él y llame al final de la actividad actual.
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { MyTask.cancel(); IscrizioniActivity.this.finish(); return true; } return super.onKeyDown(keyCode, event); }
¿Ha intentado agregar una llamada finish()
en el método onDismiss()
:
public void onDismiss(DialogInterface dialog) { this.cancel(true); IscrizioniActivity.this.finish(); }
Prueba este …
progress_dialog.setCancelable(true); progress_dialog.setOnCancelListener(new OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { // TODO Auto-generated method stub YourActivity.this.finish(); } });