Eu tenho um aplicativo que usa um SurfaceView
para desenhar uma animação o mais rápido possível. É quase perfeito, exceto que, de tempos em tempos, a animação congela por um curto período de tempo. Esse curto período dura aproximadamente 10 ms, o que não é muito, mas é grande o suficiente para ser percebido pelo usuário.
Vi que esses congelamentos são causados por alterações no espaço da pilha, que são acionadas pelo coletor de lixo. Adicionando o android:largeHeap="true"
no manifesto do meu aplicativo não resolveu o problema.
Alguém sabe como eu poderia me livrar desse problema irritante?
Respostas:
1 para resposta № 1Esse é o coletor de lixo tentando liberar alguns recursos. Você precisaria ver o logcat - ele seria visível lá.
Sugiro otimizar o uso da memória (abaixe otamanhos de bitmap ou modifique o esquema de carregamento) ou (se possível) encontre algum intervalo no qual nada seja intensamente animado e faça System.gc () nesse ponto para ocultar o congelamento do usuário.
0 para resposta № 2
Parece que o Android não foi rápido o suficiente para aumentar o espaço de pilha de um aplicativo.
Tente usar a configuração largeHeap no arquivo de manifesto. Com essa configuração ativada, o Android deixa mais memória livre toda vez que aumenta a pilha, o que minimiza a chance de atingir o limite atual.
Você só precisa definir largeHeap="true"
na tag do aplicativo AndroidManifest.xml