Comment utiliser correctement com.octo.android.robospice vers le cache bitmaps
Question
J'utilise l'exemple trouvé ici: https://github.com/octo-online/robospice/wiki/starter-Guide
et ont tenté de l'étendre pour prendre en charge les demandes de bitmap avec la mise en cache. Avec LOGCAT défini sur Verbose, je vois des messages de journalisation indiquant que les bitmaps sont mis dans le cache avec succès, mais les tentatives de lecture du cache de cache lors de l'échec du message de journal suivant:
Voici le code pertinent de la JSONSPEFFACTORY:
@Override
public CacheManager createCacheManager(Application application) {
CacheManager cacheManager = new CacheManager();
try {
final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
final int cacheSize = maxMemory / 8;
JacksonObjectPersisterFactory jacksonObjectPersisterFactory = new JacksonObjectPersisterFactory(application);
cacheManager.addPersister( jacksonObjectPersisterFactory );
// Try to add support for bitmap caching here
InFileBitmapObjectPersister filePersister = new InFileBitmapObjectPersister(application);
LruCacheBitmapObjectPersister memoryPersister = new LruCacheBitmapObjectPersister(filePersister, cacheSize);
cacheManager.addPersister(memoryPersister);
} catch (CacheCreationException e) {
e.printStackTrace();
}
return cacheManager;
}
Et voici le code qui invoque l'appel Spicemanager pour charger l'image du cache ou du réseau:
public void getNetworkBitmap(String url, String cacheKey, GetBitmapListener listener) {
GetMerchantLogoRequest request = new GetMerchantLogoRequest(url);
spiceManager.execute(request, cacheKey, DurationInMillis.ONE_HOUR, new NetworkBitmapRequestListener(listener));
}
private class NetworkBitmapRequestListener implements RequestListener<Bitmap> {
private GetBitmapListener listener;
public NetworkBitmapRequestListener(GetBitmapListener listener) {
this.listener = listener;
}
@Override
public void onRequestFailure(SpiceException spiceException) {
listener.onImageRequestFailure(spiceException);
}
@Override
public void onRequestSuccess(Bitmap logo) {
listener.onImageRequestSuccess(logo);
}
}
Ai-je besoin d'une usine pour reconstituer le bitmap à partir des données de cache? Comme ce n'est pas un objet JSON, que dois-je faire pour corriger la tentative d'utiliser la cartographie Jackson JSON? Will Jackson fera la bonne chose si je
Merci de lire ce loin!
-eric
La solution
J'ai trouvé la réponse à la lecture à travers le Cachemanager (link ci-dessous) et trébuché sur la ligne "Tous les éléments [persisters] ... sont interrogés dans l'ordre" Alors j'ai ré-ordonné les entrées de la méthode CreateCacheManager et que cela fonctionne maintenant.
Autres conseils
Vous pouvez utiliser bitmaprequest, voici un exemple: