У меня есть класс 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
, которое лучше подходит для этой цели?