Tôi đang sử dụng trang bị thêm 2-beta2 với OkHttp 2.7.0.Trang bị thêm 2/OkHttp: Hủy tất cả các yêu cầu đang chạy
Để nhận đối tượng OkHttpClient
từ trang bị thêm Tôi đang sử dụng phương pháp Retrofit .client() và hủy tất cả yêu cầu đang chạy, tôi gọi phương thức đó là cancel(Object tag) nhưng yêu cầu vẫn tiếp tục chạy và tôi nhận được phản hồi.
Ngay cả số getQueuedCallCount() và getRunningCallCount() trả lại 0 sau khi gọi hủy().
Có điều gì khác mà tôi cần thực hiện để hoạt động không? Hoặc nó có thể là một lỗi trong OkHttp?
Giải pháp thay thế, tôi gọi số shutdownNow()
trên máy khách của ExecutorService
nhưng tôi muốn có giải pháp sạch hơn.
Sau khi xem qua mã nguồn, bây giờ tôi hiểu tại sao điều này không hiệu quả. Tôi đang thiết lập thẻ trên 'Request' bằng cách sử dụng một interceptor do đó tạo một đối tượng' Request' mới. 'OkHttpClient.cancel (Thẻ đối tượng)' không làm gì kể từ gốc 'Yêu cầu' (trên đó' hủy() 'được gọi vì nó hiện diện trong hàng đợi yêu cầu' Dispatcher') vẫn không có thẻ. Có vẻ như Retrofit không trưng ra bất kỳ phương thức hoặc giao diện nào để thiết lập một thẻ trên đối tượng 'Request' ban đầu. –