Tôi đang sử dụng Trình tải ảnh phổ dụng để hiển thị hình ảnh trong ứng dụng của tôi trong danh sách xem. Tôi đang sử dụng UnlimitedDiscCache
vì đây là cơ chế bộ nhớ cache nhanh nhất theo tài liệu.Trình tải ảnh chung - bộ nhớ cache rõ ràng theo cách thủ công
Tuy nhiên, tôi muốn xóa bộ nhớ cache của đĩa khi ứng dụng của tôi bị đóng (ví dụ: onStop()
) nhưng chỉ xóa các tệp được lưu trữ lâu nhất vượt quá giới hạn nhất định (như TotalSizeLimitedDiscCache
).
tôi biết ImageLoader.clearDiscCache()
nhưng trong trường hợp của tôi điều này sẽ xóa bộ nhớ cache hoàn toàn kể từ khi tôi đang sử dụng UnlimitedDiscCache
trước ...
Vì vậy, tôi muốn có cơ chế bộ nhớ cache nhanh nhất khi người dùng tải và di chuyển các listviews và làm bộ nhớ cache chậm rõ ràng khi người dùng không còn tương tác với ứng dụng nữa.
Bất kỳ ý tưởng nào về cách tôi có thể đạt được điều này?
Bạn không thể đảm bảo rằng ứng dụng đang dừng khi 'onStop()' được gọi. Điều đó chỉ nói rằng hoạt động hiện tại đang bị dừng lại. Việc mất hiệu suất là rất tối thiểu khi so sánh với thời gian thực hiện một cơ chế bộ nhớ đệm (có thể làm chậm các ứng dụng anyways). –
@jeff_bordon Bạn có bất kỳ mã nào được sử dụng để tạo phiên bản ImageLoader không? @Androidy Có, bạn có thể phân biệt khi ứng dụng sắp kết thúc, như 'if (isFinishing()) {làm điều gì đó}' –
@jeff_bordon bạn có thể có BoB (tốt nhất là cả hai). Xem nguồn tại đây https://github.com/nostra13/Android-Universal-Image-Loader/blob/master/library/src/com/nostra13/universalimageloader/cache/disc/impl/LimitedAgeDiscCache.java Viết UnlimitedAgeDiskCache sẽ khá thẳng về phía trước. Tất cả những gì bạn cần biết là ngày tháng và sự khác biệt giữa bây giờ và sau đó. Tôi nghĩ rằng nó sẽ không làm giảm tốc độ của ListView nếu nó là vấn đề của vài ifs. –