Tenho uma AsyncTask
classe que executo que baixa uma grande lista de dados de um site.
No caso de o usuário final ter uma conexão de dados muito lenta ou irregular no momento do uso, eu gostaria de fazer o AsyncTask
tempo limite após um período de tempo. Minha primeira abordagem para isso é assim:
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 );
Depois de iniciar o AsyncTask
, um novo manipulador é iniciado que cancelará AsyncTask
após 30 segundos, se ainda estiver em execução.
Será esta uma boa abordagem? Ou há algo embutido AsyncTask
que é mais adequado para esse fim?