estou tendo um problema serio, estou fazendo download via aplicação de um numero considerável de imagens tipo umas 5000 imagens de varias dimensões todas. eu começo a baixar tá tudo tranquilo, quando eu chego em torno da imagem 1800 eu estouro o heap size do aparelho. pesquisando pela nela testei algumas soluções e vi na documentação do Android falando do Option implementando o inSampleSize, porem essa variavel diminui o tamanho da imagem, como estou usando Bitmap, já chamei o recycle(), já chamei o system.gc(), chamei os dois juntos tb, e não consigo achar uma forma de limpar o heap do aparelho para cada download, não me atenderia dimininuir o tamanhdo da imagem sendo que eu vou precisar dela do tamanho que ela é .
o problema se dá nessa ultima linha;
ByteArrayInputStream is = new ByteArrayInputStream(tempOut.toByteArray());
// BitmapFactory.Options options = new BitmapFactory.Options();
// options.inSampleSize = 1;
Bitmap myBitmap = BitmapFactory.decodeStream(is);
Utilize um profiler para identificar o seu gargalo. Lembre sempre de limpar as instancias que você esta carregando as imagens para evitar que elas fiquem em memoria.
Fiz um post a alguns dias sobre como resolvi um memory leak bem cabreiro… você pode ver aqui: www.jemiliod.blogspot.com
Em uma aplicação de camera ocorria o outOfMemory algumas vezes, diminui bem a ocorrencia utilizando o recycle, setando null para qualquer byte array utilizado e por fim chamando o gc.
Galera aparentemente eu resolvi. retirei todos os bitmaps do metodos e salvei direto com o FileOutput e funcionou, resolvi garantir que a imagens vai chegar do jeito que eu preciso do lado do servidor.