Tôi có một AsyncTasklớ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 AsyncTaskhế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 AsyncTasksau 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?