Saya memiliki AsyncTaskkelas yang saya jalankan yang mengunduh daftar besar data dari situs web.
Jika pengguna akhir memiliki koneksi data yang sangat lambat atau tidak stabil pada saat penggunaan, saya ingin membuat AsyncTaskbatas waktu setelah jangka waktu tertentu. Pendekatan pertama saya untuk ini adalah seperti ini:
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 );
Setelah memulai AsyncTask, penangan baru dimulai yang akan membatalkan AsyncTasksetelah 30 detik jika masih berjalan.
Apakah ini pendekatan yang bagus? Atau adakah sesuatu yang dibangun di dalamnya AsyncTaskyang lebih cocok untuk tujuan ini?