Tôi có một AsyncTask
lớp mà tôi thực hiện tải xuống một danh sách dữ liệu lớn từ một trang web.
Trong trường hợp người dùng cuối có kết nối dữ liệu rất chậm hoặc không chính xác tại thời điểm sử dụng, tôi muốn thực hiện AsyncTask
hết thời gian chờ sau một khoảng thời gian. Cách tiếp cận đầu tiên của tôi về điều này là như vậy:
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 );
Sau khi bắt đầu AsyncTask
, một trình xử lý mới được bắt đầu sẽ hủy AsyncTask
sau 30 giây nếu nó vẫn chạy.
Đây có phải là một cách tiếp cận tốt? Hoặc có một cái gì đó được xây dựng vào AsyncTask
đó là phù hợp hơn cho mục đích này?