Que valor você colocou pra cacheSize?
sizeOf() tem que retornar um valor compatível. Com base apenas no snippet que vocÊ mostrou, você deve ter criado seu LRUCache mais ou menos assim:
int cacheSize = 10; // 10 kbytes.
LruCache bitmapCache = new LruCache(cacheSize) {
protected int sizeOf(String key, Bitmap value) {
return value.getByteCount();
}
}
O problema com isso é que você estava usando o tamanho da imagem em bytes (uma imaem de 9 Kb tem ~9000 bytes) e 9000 é maior que 10. Dividindo getByteCount() por 1024, você obtém o tamanho em kbytes (~9) e 9 é menor que 10 e, portanto, a imagem pode ser adicionada ao cache.
Aora você tem certeza que deseja controlar o cache com base no n;umero de bytes? Embora esse seja um approach válido, isso sempre pode resultar em um item não poder ser adicionado porque ele sozinho não cabe no cache.
-Bruno
Em 7 de março de 2013 21:07, Gink Labrev <gink.labrev@gmail.com> escreveu:
Resolvido!!Foi uma bobeira minha!EstavamMemoryCache = new LruCache<String, Bitmap>(cacheSize) {@Overrideprotected int sizeOf(String key, Bitmap bitmap) {return bitmap.getByteCount();}}ao invés demMemoryCache = new LruCache<String, Bitmap>(cacheSize) {@Overrideprotected int sizeOf(String key, Bitmap bitmap) {return bitmap.getByteCount() / 1024;}}Alguém sabe qual a diferença essa divisão por 1024 faz ?Abs,--2013/3/7 Gink Labrev <gink.labrev@gmail.com>
Bruno,Fiz isso:public void addBitmapToMemoryCache(String key, Bitmap bitmap) {if (getBitmapFromMemCache(key) == null) {Log.i("TESTE", (bitmap == null) ? "NULL" : "NOT NULL"); // retorna "NOT NULL"
mMemoryCache.put(key, bitmap);Log.i("TESTE", "Tamanho do cache: " + mMemoryCache.size() ); // retorna 0}}E aparece "NOT NULL" sempre. A única explicação que consigo conceber é que o tamanho da imagem está muito grande para o cache.Mas não sei como debugar isso ...2013/3/7 Bruno Albuquerque <bruno.albuquerque@gmail.com>
Você deve estar passando null no lugar do parâmetro bitmap. LRUCache não aceita valores null.
--2013/3/7 Gink Labrev <gink.labrev@gmail.com>--Pessoal,Estou tentando usar o LRU Cache e não funciona.Notei também que o cache continua com tamanho zero logo após a inserção:public void addBitmapToMemoryCache(String key, Bitmap bitmap) {if (getBitmapFromMemCache(key) == null) {mMemoryCache.put(key, bitmap);Log.i("TESTE", "Tamanho do cache: " + mMemoryCache.size() ); // retorna 0}}Alguém sabe explica o que está acontecendo ?Abs,
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.






0 comentários:
Postar um comentário