Я использую пример найти здесь: https://github.com/octo-online/robospice/wiki/Starter-GuideКак правильно использовать com.octo.android.robospice кэшировать растровые изображения
и попытались распространить его на запросы поддержки растровых с кэшированием. Когда LogCat настроен на подробное описание, я вижу сообщения журнала, указывающие, что растровые изображения успешно помещаются в кеш, но попытки чтения растровых изображений из кеша при последующих вызовах не работают со следующим сообщением журнала:
11-15 09 : 14: 02.694: D // RequestRunner.java: 102 (5462): com.octo.android.robospice.persistence.exception.CacheLoadingException: org.codehaus.jackson.map.JsonMappingException: не найдено подходящего конструктора для типа [простой тип , класс android.graphics.Bitmap]: не может создать экземпляр из объекта JSON (нужно добавить/включить информацию о типе?)
Вот соответствующий код из JsonSpiceFactory:
@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;
}
И вот код, который вызывает вызов spiceManager, чтобы загрузить изображение из кэша или сетей:
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);
}
}
мне нужна завод для восстановления растрового изображения из данных кэша ли? Поскольку это не объект Json, что мне нужно сделать, чтобы исправить попытку использовать отображение Джексона Json? Будет ли Джексон делать правильные вещи, если я добавить/включить информацию о типе? Как это сделать?
Спасибо за прочтение!
-Эрик
Благодаря but.The выше «Нет подходящего конструктора найден ...» ошибка по-прежнему появляется в LogCat. –