Trình tải có thể đóng gói thực tế mọi thứ, bao gồm cả yêu cầu Volley. Khi Trình tải của bạn đóng gói một khung công tác đã xử lý nền cho bạn và gọi lại cho bạn về chủ đề chính, như Volley, việc triển khai trình tải của bạn không được kế thừa từ AsyncTaskLoader
mà chỉ đơn giản là từ lớp cơ sở Loader
. Sau đó, bạn sẽ bắt đầu yêu cầu Volley theo phương thức onForceLoad()
.
Khi bộ nạp của bạn nhận kết quả trở lại trên sợi chính thông qua gọi lại, nó chỉ cần đẩy nó vào Hoạt động/Phân đoạn bằng cách gọi deliverResult()
.
Trình tải của bạn cũng cần giữ tham chiếu đến yêu cầu Volley đang tiến hành để có thể hủy yêu cầu đó trong onStopLoading()
. onStopLoading() không được gọi trong trường hợp thay đổi cấu hình như xoay màn hình, chỉ khi rời khỏi Hoạt động.
Điểm bất lợi duy nhất là Trình tải không có cơ chế tích hợp để truyền lỗi, còn Volley thì có. Vì vậy, trong gọi lại lỗi Volley bên trong Trình tải của bạn, bạn sẽ cần phân phối kết quả rỗng hoặc gửi một phát sóng cục bộ để thông báo cho Hoạt động/Phân đoạn của lỗi.
Tôi đã suy nghĩ về một tình huống mà người dùng xoay thiết bị trong khi tải. Hành vi bình thường của khung Volley sẽ hủy yêu cầu và khởi động lại chúng khi thay đổi định hướng được thực hiện. Sử dụng mẫu Loader sẽ bảo vệ trạng thái tải từ các thay đổi định hướng. – husrevo
có. bạn nói đúng.không có thẳng, ngoài hộp có nghĩa là "kết nối lại" với yêu cầu đang chờ xử lý hoặc "giữ cho nó" đang chạy và nhận phản hồi về các thay đổi định hướng/Dừng hoạt động-Tiếp tục. –
Bạn nên gọi nó từ chủ đề nền trong các tình huống như tải thông tin bổ sung cho thông báo đẩy trước khi nó hiển thị. Tuy nhiên, vì mục đích chung, tốt hơn nên gọi nó từ chủ đề chính. – Gabriel