Câu hỏi của bạn thực sự mờ với tôi. Tôi không hiểu lý do tại sao bạn không thể sử dụng cơ chế lưu giữ thông thường của RS. Nếu bạn làm như vậy, nó khá dễ dàng để duy trì dữ liệu của bạn khi yêu cầu đã được thực hiện.
Có thể tôi đang thiếu thứ gì đó. Vì vậy, nếu yêu cầu của bạn thực sự là duy trì dữ liệu, thì cách tiếp cận mà bạn đề xuất có vẻ đúng. Bạn có thể tiêm dịch vụ gia vị chính nó bên trong yêu cầu của bạn (xem cách addRequest được ghi đè trong RetrofitSpiceService chẳng hạn).Yêu cầu sau đó sẽ giữ một ngữ cảnh có thể được sử dụng cho sự kiên trì bên trong một cuộc gọi lại hoặc bên trong chính yêu cầu đó.
Gần đây tôi đã mã hóa yêu cầu POST bằng cách sử dụng trang bị thêm và RS. Tôi đã thay đổi chữ ký của yêu cầu POST để trả về một Void. Sau đó, sửa đổi một chút bộ chuyển đổi trang bị thêm để đối phó với trường hợp đó và trả về null. Yêu cầu nhận được dịch vụ gia vị thông qua tiêm như đã đề cập trước đó và có thể thực hiện một số hành động trên cơ sở dữ liệu.
Dưới đây là một số mã để tiêm ứng dụng bên trong yêu cầu từ bên trong dịch vụ gia vị.
@Override
public void addRequest(CachedSpiceRequest<?> request,
Set<RequestListener<?>> listRequestListener) {
if (request.getSpiceRequest() instanceof MySpiceRequest) {
MySpiceRequest<?> mySpiceRequest = (MySpiceRequest<?>) request
.getSpiceRequest();
mySpiceRequest.setApplication(this.getApplication());
}
super.addRequest(request, listRequestListener);
}
Hey làm bạn có một ví dụ về điều này ... Tôi đang thực sự cố gắng sử dụng Robospice cũng như để bộ nhớ cache dữ liệu với Retrofit – Lion789
Chỉnh sửa câu trả lời của tôi để cung cấp thêm thông tin cho @ Lion789. Hãy cho tôi biết nếu bạn cần thêm thông tin. – saywhatnow
cảm ơn, đã thực sự tò mò, nếu tôi có okHttpClient và trang bị thêm, hiện bộ nhớ đệm xảy ra tự động có nghĩa là tôi không cần phải sử dụng Robospice sau đó? – Lion789