У меня есть класс AsyncTask
, который я выполняю, который загружает большой список данных с сайта.
В случае, если у конечного пользователя очень медленное или нестабильное соединение для передачи данных во время использования, я хотел бы сделать тайм-аут AsyncTask
по истечении определенного периода времени. Мой первый подход к этому такой:
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 );
После запуска AsyncTask
запускается новый обработчик, который отменяет AsyncTask
через 30 секунд, если он все еще выполняется.
Это хороший подход? Или есть что-то встроенное в AsyncTask
, которое лучше подходит для этой цели?