Tenho uma AsyncTaskclasse 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 AsyncTasktempo 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á AsyncTaskapós 30 segundos, se ainda estiver em execução.
Será esta uma boa abordagem? Ou há algo embutido AsyncTaskque é mais adequado para esse fim?