Tengo una AsyncTask
clase 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 AsyncTask
tiempo 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á AsyncTask
después de 30 segundos si aún se está ejecutando.
¿Es este un buen enfoque? ¿O hay algo integrado AsyncTask
que sea más adecuado para este propósito?