Android app sem problemas de memória - tentei de tudo e ainda perdi

Passei 4 dias inteiros tentando de tudo para descobrir o vazamento de memória em um aplicativo que estou desenvolvendo, mas as coisas pararam de fazer sentido há muito tempo.

O aplicativo que estou desenvolvendo é de natureza social; pense no perfil de Atividades (P) e liste Atividades com dados - por exemplo, emblemas (B). Você pode pular do perfil para uma lista de crachás para outros perfis, para outras listas, etc.

Imagine um fluxo como este P1 -> B1 -> P2 -> B2 -> P3 -> B3, etc. Por consistência, estou carregando perfis e emblemas do mesmo usuário, para que cada página P seja a mesma e é cada página B.

A essência geral do problema é: depois de navegar um pouco, dependendo do tamanho de cada página, recebo uma exceção de falta de memória em locais aleatórios - Bitmaps, Strings, etc - não parece ser consistente .

Depois de fazer todo o possível para descobrir por que estou ficando sem memória, não consegui nada. O que eu não entendo é por que o Android não está matando P1, B1, etc. se ficar sem memória ao carregar e, em vez disso, trava. Eu esperaria que essas atividades anteriores morressem e fossem ressuscitadas se eu alguma vez Voltar a elas via onCreate () e onRestoreInstanceState ().

Deixe isso sozinho - mesmo que eu faça P1 -> B1 -> Voltar -> B1 -> Voltar -> B1, ainda tenho uma falha. Isso indica algum tipo de vazamento de memória, mas mesmo depois de descarregar o hprof e usar o MAT e o JProfiler, não consigo identificá-l

Desativei o carregamento de imagens da Web (e aumentei os dados de teste carregados para compensar e tornar o teste mais justo) e verifiquei se o cache de imagens usa SoftReferences. Na verdade, o Android tenta liberar as poucas SoftReferences que possui, mas logo antes de ficar sem memóri

s páginas do @Badge obtêm dados da Web, carregam-nos em uma matriz de EntityData de um BaseAdapter e os alimentam com um ListView (na verdade, estou usando o @ do CommonsWaexcellent MergeAdapter, mas nesta atividade de Distintivo, na verdade, existe apenas 1 adaptador, mas eu queria mencionar esse fato de qualquer maneira

Passei pelo código e não consegui encontrar nada que vazasse. Limpei e anulei tudo o que pude encontrar e até System.gc () esquerda e direita, mas o aplicativo ainda trav

Ainda não entendo por que as atividades inativas que estão na pilha não são colhidas e eu adoraria descobrir isso.

este momento, estou procurando por dicas, conselhos, soluções ... qualquer coisa que possa ajuda

Obrigado

questionAnswers(10)

yourAnswerToTheQuestion