Ho una AsyncTask
classe che eseguo che scarica un grande elenco di dati da un sito Web.
Nel caso in cui l'utente finale disponga di una connessione dati molto lenta o imprevedibile al momento dell'uso, vorrei effettuare il AsyncTask
timeout dopo un periodo di tempo. Il mio primo approccio a questo è così:
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 );
Dopo aver avviato il AsyncTask
, viene avviato un nuovo gestore che annullerà AsyncTask
dopo 30 secondi se è ancora in esecuzione.
è un buon approccio? O c'è qualcosa AsyncTask
che è più adatto a questo scopo?