Tôi hiện đang phát triển một ứng dụng Android tìm nạp hình ảnh bằng cách sử dụng các yêu cầu http. Nó sẽ là khá sưng lên nếu tôi có thể cache những hình ảnh để cải thiện hiệu suất và sử dụng băng thông.Cách sử dụng CacheManager của Android?
Tôi đã xem qua lớp CacheManager trong tài liệu tham khảo Android, nhưng tôi thực sự không biết cách sử dụng nó, hoặc những gì nó thực sự làm.
Tôi đã scoped qua ví dụ này, nhưng tôi cần một số giúp hiểu nó:
/core/java/android/webkit/gears/ApacheHttpRequestAndroid.java
Ngoài ra, các quốc gia tham khảo:
"Yêu cầu mạng được cung cấp cho thành phần này và nếu chúng không thể được giải quyết bằng bộ nhớ cache, các tiêu đề HTTP được đính kèm, nếu thích hợp, với yêu cầu xác nhận lại nội dung. "
Tôi không chắc điều này có ý nghĩa gì hoặc nó hoạt động như thế nào, vì getCacheFile của CacheManager chỉ chấp nhận URL chuỗi và Bản đồ chứa tiêu đề. Không chắc chắn những gì các tập tin đính kèm được đề cập có nghĩa là.
Một lời giải thích hoặc một ví dụ mã đơn giản sẽ thực sự làm cho ngày của tôi. Cảm ơn!
Cập nhật
Dưới đây là những gì tôi có ngay bây giờ. Tôi rõ ràng làm sai, chỉ không biết ở đâu.
public static Bitmap getRemoteImage(String imageUrl) { URL aURL = null; URLConnection conn = null; Bitmap bmp = null; CacheResult cache_result = CacheManager.getCacheFile(imageUrl, new HashMap()); if (cache_result == null) { try { aURL = new URL(imageUrl); conn = aURL.openConnection(); conn.connect(); InputStream is = conn.getInputStream(); cache_result = new CacheManager.CacheResult(); copyStream(is, cache_result.getOutputStream()); CacheManager.saveCacheFile(imageUrl, cache_result); } catch (Exception e) { return null; } } bmp = BitmapFactory.decodeStream(cache_result.getInputStream()); return bmp; }
bạn gặp phải lỗi nào với mã này? – Janusz
E/AndroidRuntime (3097): LOẠI TRỪ CHẤT LƯỢNG: chính E/AndroidRuntime (3097): java.lang.NullPointerException E/AndroidRuntime (3097): tại android.webkit.CacheManager.saveCacheFile (CacheManager.java:459) là những gì tôi nhận được khi cố gắng lưu vào bộ nhớ cache, đã thêm tiền thưởng nếu có thể tôi muốn biết cách thực hiện. E/AndroidRuntime (3097): tại android.webkit.CacheManager.saveCacheFile (CacheManager.java:453) – HaMMeReD