Tengo una AsyncTaskclase que ejecuto que descarga una gran lista de datos de un sitio web.
En el caso de que el usuario final tenga una conexión de datos muy lenta o irregular en el momento del uso, me gustaría dejar el AsyncTasktiempo de espera después de un período de tiempo. Mi primer acercamiento a esto es así:
MyDownloader downloader = new MyDownloader();
downloader.execute();
Handler handler = new Handler();
handler.postDelayed(new Runnable()
{
@Override
public void run() {
if ( downloader.getStatus() == AsyncTask.Status.RUNNING )
downloader.cancel(true);
}
}, 30000 );
Después de iniciar AsyncTask, se inicia un nuevo controlador que cancelará AsyncTaskdespués de 30 segundos si aún se está ejecutando.
¿Es este un buen enfoque? ¿O hay algo integrado AsyncTaskque sea más adecuado para este propósito?