Đối với phiên bản cập nhật nhất 2.71828 Đây là câu trả lời của bạn.
Q1 : Nó không có bộ đệm đĩa cục bộ?
A1 : Có bộ nhớ đệm mặc định trong Picasso và luồng yêu cầu giống như thế này
App -> Memory -> Disk -> Server
Bất cứ nơi nào họ gặp hình ảnh của họ trước, họ sẽ sử dụng hình ảnh đó và sau đó dừng luồng yêu cầu. Còn về luồng phản hồi? Đừng lo lắng, nó đây.
Server -> Disk -> Memory -> App
Theo mặc định, chúng sẽ lưu trữ vào đĩa cục bộ trước tiên cho bộ nhớ đệm lưu giữ mở rộng. Sau đó là bộ nhớ, ví dụ như việc sử dụng bộ nhớ cache.
Bạn có thể sử dụng chỉ báo tích hợp trong Picasso để xem hình ảnh hình thành ở đâu bằng cách bật tính năng này.
Picasso.get().setIndicatorEnabled(true);
Nó sẽ hiển thị một lá cờ ở góc trên bên trái của ảnh của bạn.
- Cờ đỏ có nghĩa là hình ảnh đến từ máy chủ. (Không có bộ nhớ đệm ở lần tải đầu tiên)
- Cờ xanh có nghĩa là ảnh đến từ đĩa cục bộ. (Bộ nhớ đệm)
- Cờ xanh có nghĩa là hình ảnh đến từ ký ức. (Bộ nhớ đệm phiên bản)
Câu hỏi 2 : Làm cách nào để kích hoạt bộ nhớ đệm đĩa vì tôi sẽ sử dụng cùng một hình ảnh nhiều lần?
A2 : Bạn không cần phải kích hoạt nó. Đó là mặc định.
Điều bạn cần làm là TẮT nó khi bạn muốn hình ảnh của mình luôn mới. Có 2 cách để tắt bộ nhớ đệm.
- Đặt
.memoryPolicy()
thành NO_CACHE và / hoặc NO_STORE và quy trình sẽ như thế này.
NO_CACHE sẽ bỏ qua việc tìm kiếm hình ảnh từ bộ nhớ.
App -> Disk -> Server
NO_STORE sẽ bỏ qua hình ảnh lưu trữ trong bộ nhớ khi hình ảnh tải đầu tiên.
Server -> Disk -> App
- Đặt
.networkPolicy()
thành NO_CACHE và / hoặc NO_STORE và quy trình sẽ như thế này.
NO_CACHE sẽ bỏ qua việc tìm kiếm hình ảnh từ đĩa.
App -> Memory -> Server
NO_STORE sẽ bỏ qua hình ảnh lưu trữ trong đĩa khi hình ảnh tải đầu tiên.
Server -> Memory -> App
Bạn không thể TẮT nếu hoàn toàn không có ảnh trong bộ nhớ đệm. Đây là một ví dụ.
Picasso.get().load(imageUrl)
.memoryPolicy(MemoryPolicy.NO_CACHE,MemoryPolicy.NO_STORE)
.networkPolicy(NetworkPolicy.NO_CACHE, NetworkPolicy.NO_STORE)
.fit().into(banner);
Dòng hoàn toàn không có bộ nhớ đệm và không có lưu trữ sẽ trông như thế này.
App -> Server //Request
Server -> App //Response
Vì vậy, bạn có thể cần điều này để giảm thiểu việc sử dụng bộ nhớ ứng dụng của mình.
Câu hỏi 3 : Tôi có cần thêm một số quyền đĩa vào tệp kê khai android không?
A3 : Không, nhưng đừng quên thêm quyền INTERNET cho yêu cầu HTTP của bạn.