Oi Bruno,
Valeu pela explicação.
Quanto ao valor do cache, estou seguindo o tutorial oficial do Android.
final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
final int cacheSize = maxMemory / 8;
Conhece alguma alternativa melhor ?
Abs,
Em 8 de março de 2013 09:44, Bruno Albuquerque <bruno.albuquerque@gmail.com> escreveu:
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.-BrunoEm 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.
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