Mon application utilise la bibliothèque réseau Volley pour la mise en cache et l'obtention de données à partir du serveur, j'ai besoin de mettre en cache les images sur le disque. Ici, je peux écrire des données sur le disque, mais ma méthode getBitmap() dans DiskCache renvoie toujours null.DiskBased Image cache renvoie null
Voici ma mise en œuvre cache disque
public class DiskCache extends DiskBasedCache implements ImageCache{
public DiskCache(File cacheDir) {
super(cacheDir);
}
public DiskCache(File rootDirectory, int maxCacheSizeInBytes) {
super(rootDirectory, maxCacheSizeInBytes);
// TODO Auto-generated constructor stub
}
@Override
public Bitmap getBitmap(String url) {
// TODO Auto-generated method stub
final Entry requestedItem = get(url);
if (requestedItem == null){
LogUtils.LOGI("CACHE", "NO Valid Entry");
return null;}
return BitmapFactory.decodeByteArray(requestedItem.data, 0, requestedItem.data.length);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
// TODO Auto-generated method stub
final Entry entry = new Entry();
ByteBuffer buffer = ByteBuffer.allocate(getByteSize(bitmap));
bitmap.copyPixelsToBuffer(buffer);
entry.data = buffer.array();
put(url, entry);
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1)
public int getByteSize(Bitmap bitmap){
if(UIUtils.hasHoneycombMR1()){
return bitmap.getByteCount();
}
else{
return bitmap.getRowBytes()*bitmap.getHeight();
}
}
}
Une question? Ici, lorsque vous spécifiez le format de compression au format PNG, existe-t-il un moyen de le garder générique pour qu'il fonctionne bien avec le format PNG, JPG, etc.? –