Tôi có câu hỏi liên quan đến tình huống xảy ra thường xuyên đơn giản này trong Android.Mẫu WeakReference/AsyncTask trong android
Chúng tôi có một hoạt động chính, chúng tôi gọi AsyncTask cùng với tham chiếu của tính chính, để AsyncTask có thể cập nhật các chế độ xem trên MainActivity.
tôi sẽ phá vỡ sự kiện này thành những bước
- MainActivity tạo ra một AyncTask, qua tham chiếu của nó với nó.
- AysncTask, bắt đầu công việc, tải xuống mười tệp ví dụ
- Người dùng đã thay đổi hướng của thiết bị. Điều này dẫn đến một con trỏ mồ côi trong AsyncTask
- Khi AsyncTask hoàn tất và cố gắng truy cập hoạt động để cập nhật trạng thái, nó bị treo do con trỏ rỗng.
Giải pháp cho ở trên là để giữ một WeakReference trong AsyncTask theo khuyến cáo của cuốn sách "Pro Android 4"
WeakReference<Activity> weakActivity;
in method onPostExecute
Activity activity = weakActivity.get();
if (activity != null) {
// do your stuff with activity here
}
Làm thế nào để giải quyết tình hình này?
Câu hỏi của tôi là, nếu asynctask của tôi đang tải xuống mười tệp và sau khi hoàn thành 5 hoạt động được khởi động lại (do thay đổi định hướng) thì FileDownloadingTask của tôi sẽ được gọi lại một lần nữa?
Điều gì sẽ xảy ra với AsyncTask trước đó ban đầu được gọi?
Cảm ơn bạn và tôi xin lỗi về độ dài của câu hỏi.
Cảm ơn bạn đã đăng câu hỏi có hình dạng và được diễn đạt tốt. – Travis